From 15763d1db26abdba832201b21b7574427ae0cad3 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Sun, 25 Oct 2026 00:54:39 +0000 Subject: [PATCH] deps: update icu to 79.1 --- deps/icu-small/LICENSE | 2 +- deps/icu-small/README-FULL-ICU.txt | 4 +- deps/icu-small/source/.clang-format | 2 +- deps/icu-small/source/common/BUILD.bazel | 3 + deps/icu-small/source/common/appendable.cpp | 7 +- deps/icu-small/source/common/brkiter.cpp | 6 +- deps/icu-small/source/common/bytesinkutil.cpp | 4 +- deps/icu-small/source/common/bytesinkutil.h | 4 +- deps/icu-small/source/common/bytestream.cpp | 11 +- deps/icu-small/source/common/bytestrie.cpp | 12 +- .../source/common/bytestriebuilder.cpp | 15 +- .../source/common/bytestrieiterator.cpp | 17 +- deps/icu-small/source/common/caniter.cpp | 13 +- deps/icu-small/source/common/chariter.cpp | 4 +- deps/icu-small/source/common/charstr.cpp | 77 +- deps/icu-small/source/common/cmemory.h | 348 +- deps/icu-small/source/common/dtintrv.cpp | 2 +- deps/icu-small/source/common/edits.cpp | 16 +- deps/icu-small/source/common/filteredbrk.cpp | 24 +- .../source/common/filterednormalizer2.cpp | 46 +- deps/icu-small/source/common/icuplug.cpp | 14 +- .../icu-small/source/common/localebuilder.cpp | 28 +- .../source/common/localefallback_data.h | 2138 ++--- .../icu-small/source/common/localematcher.cpp | 58 +- deps/icu-small/source/common/locavailable.cpp | 2 +- deps/icu-small/source/common/locbased.cpp | 6 +- deps/icu-small/source/common/locbased.h | 6 +- deps/icu-small/source/common/locdispnames.cpp | 36 +- deps/icu-small/source/common/locdspnm.cpp | 162 +- deps/icu-small/source/common/locid.cpp | 115 +- deps/icu-small/source/common/loclikely.cpp | 2 +- .../source/common/loclikelysubtags.h | 2 +- deps/icu-small/source/common/locmap.cpp | 1 - deps/icu-small/source/common/messageimpl.h | 4 +- .../source/common/messagepattern.cpp | 37 +- deps/icu-small/source/common/norm2_nfc_data.h | 172 +- deps/icu-small/source/common/norm2allmodes.h | 65 +- deps/icu-small/source/common/normalizer2.cpp | 36 +- .../source/common/normalizer2impl.cpp | 17 +- .../icu-small/source/common/normalizer2impl.h | 2 +- deps/icu-small/source/common/normlzr.cpp | 14 +- deps/icu-small/source/common/propname_data.h | 1686 ++-- deps/icu-small/source/common/putil.cpp | 48 +- deps/icu-small/source/common/putilimp.h | 6 + deps/icu-small/source/common/rbbi.cpp | 25 +- deps/icu-small/source/common/rbbi_cache.cpp | 17 +- deps/icu-small/source/common/rbbi_cache.h | 7 + deps/icu-small/source/common/rbbidata.cpp | 3 +- deps/icu-small/source/common/rbbidata.h | 5 +- deps/icu-small/source/common/rbbirb.cpp | 8 +- deps/icu-small/source/common/rbbirb.h | 11 +- deps/icu-small/source/common/rbbiscan.cpp | 2 +- deps/icu-small/source/common/rbbisetb.cpp | 25 +- deps/icu-small/source/common/rbbisetb.h | 5 +- deps/icu-small/source/common/rbbistbl.cpp | 80 +- deps/icu-small/source/common/rbbitblb.cpp | 776 +- deps/icu-small/source/common/rbbitblb.h | 25 +- deps/icu-small/source/common/resbund.cpp | 30 +- deps/icu-small/source/common/schriter.cpp | 2 +- deps/icu-small/source/common/servloc.h | 2 +- deps/icu-small/source/common/servls.cpp | 8 +- .../source/common/simpleformatter.cpp | 59 +- deps/icu-small/source/common/stringpiece.cpp | 6 +- .../source/common/stringtriebuilder.cpp | 24 +- deps/icu-small/source/common/ubidi.cpp | 133 +- .../source/common/ubidi_props_data.h | 982 +- deps/icu-small/source/common/ubidiimp.h | 16 +- deps/icu-small/source/common/ubidiln.cpp | 7 +- .../source/common/ubiditransform.cpp | 22 +- deps/icu-small/source/common/ubidiwrt.cpp | 212 +- deps/icu-small/source/common/ubrk.cpp | 2 +- .../source/common/ucase_props_data.h | 815 +- deps/icu-small/source/common/ucasemap.cpp | 57 +- deps/icu-small/source/common/ucasemap_imp.h | 23 +- .../common/ucasemap_titlecase_brkiter.cpp | 23 +- deps/icu-small/source/common/ucat.cpp | 11 +- .../source/common/uchar_props_data.h | 8255 +++++++++-------- deps/icu-small/source/common/ucharstrie.cpp | 8 +- .../source/common/ucharstriebuilder.cpp | 15 +- .../source/common/ucharstrieiterator.cpp | 12 +- deps/icu-small/source/common/uchriter.cpp | 8 +- deps/icu-small/source/common/ucnv.cpp | 18 +- deps/icu-small/source/common/ucnv_bld.cpp | 23 +- deps/icu-small/source/common/ucnv_imp.h | 25 +- deps/icu-small/source/common/ucnv_io.cpp | 15 +- deps/icu-small/source/common/ucnv_io.h | 8 +- deps/icu-small/source/common/ucnvsel.cpp | 26 +- deps/icu-small/source/common/ucptrie.cpp | 11 +- deps/icu-small/source/common/ucurr.cpp | 16 +- deps/icu-small/source/common/udata.cpp | 4 +- deps/icu-small/source/common/udatamem.cpp | 13 +- deps/icu-small/source/common/udatamem.h | 6 +- deps/icu-small/source/common/uenum.cpp | 28 +- deps/icu-small/source/common/uenumimp.h | 12 +- deps/icu-small/source/common/uidna.cpp | 1 + deps/icu-small/source/common/uloc.cpp | 293 +- deps/icu-small/source/common/uloc_keytype.cpp | 4 +- deps/icu-small/source/common/uloc_tag.cpp | 34 +- deps/icu-small/source/common/ulocale.cpp | 2 +- deps/icu-small/source/common/ulocbuilder.cpp | 2 +- deps/icu-small/source/common/ulocimp.h | 22 +- deps/icu-small/source/common/umapfile.cpp | 13 +- deps/icu-small/source/common/unames.cpp | 297 +- .../source/common/unicode/appendable.h | 17 +- .../icu-small/source/common/unicode/brkiter.h | 24 +- .../source/common/unicode/bytestream.h | 12 +- .../source/common/unicode/bytestrie.h | 36 +- .../source/common/unicode/bytestriebuilder.h | 7 +- .../icu-small/source/common/unicode/caniter.h | 12 +- .../source/common/unicode/char16ptr.h | 26 +- .../source/common/unicode/chariter.h | 6 +- .../icu-small/source/common/unicode/dtintrv.h | 2 +- deps/icu-small/source/common/unicode/edits.h | 24 +- .../icu-small/source/common/unicode/enumset.h | 3 +- .../source/common/unicode/errorcode.h | 4 +- .../icu-small/source/common/unicode/icuplug.h | 16 +- deps/icu-small/source/common/unicode/idna.h | 36 +- .../source/common/unicode/localebuilder.h | 25 +- .../source/common/unicode/localematcher.h | 53 +- .../source/common/unicode/localpointer.h | 21 +- .../source/common/unicode/locdspnm.h | 20 +- deps/icu-small/source/common/unicode/locid.h | 83 +- .../source/common/unicode/messagepattern.h | 28 +- .../source/common/unicode/normalizer2.h | 67 +- .../icu-small/source/common/unicode/normlzr.h | 14 +- .../source/common/unicode/parsepos.h | 4 +- .../source/common/unicode/platform.h | 44 + deps/icu-small/source/common/unicode/rbbi.h | 24 +- deps/icu-small/source/common/unicode/rep.h | 1 - .../icu-small/source/common/unicode/resbund.h | 36 +- .../source/common/unicode/schriter.h | 3 +- .../source/common/unicode/simpleformatter.h | 67 +- .../icu-small/source/common/unicode/strenum.h | 8 +- .../source/common/unicode/stringpiece.h | 18 +- .../source/common/unicode/stringtriebuilder.h | 20 +- .../source/common/unicode/symtable.h | 18 +- deps/icu-small/source/common/unicode/ubidi.h | 184 +- deps/icu-small/source/common/unicode/ubrk.h | 3 +- .../source/common/unicode/ucasemap.h | 8 +- deps/icu-small/source/common/unicode/ucat.h | 9 +- deps/icu-small/source/common/unicode/uchar.h | 41 +- .../source/common/unicode/ucharstrie.h | 38 +- .../source/common/unicode/ucharstriebuilder.h | 11 +- .../source/common/unicode/uchriter.h | 9 +- deps/icu-small/source/common/unicode/uclean.h | 1 - deps/icu-small/source/common/unicode/ucnv.h | 14 +- .../icu-small/source/common/unicode/ucnvsel.h | 18 +- .../icu-small/source/common/unicode/ucptrie.h | 11 +- deps/icu-small/source/common/unicode/ucurr.h | 14 +- deps/icu-small/source/common/unicode/udata.h | 4 +- deps/icu-small/source/common/unicode/uenum.h | 12 +- .../source/common/unicode/uldnames.h | 4 +- deps/icu-small/source/common/unicode/uloc.h | 8 +- .../icu-small/source/common/unicode/ulocale.h | 12 +- .../source/common/unicode/ulocbuilder.h | 1 - .../icu-small/source/common/unicode/unifilt.h | 2 +- .../source/common/unicode/unifunct.h | 4 +- .../source/common/unicode/unimatch.h | 2 +- deps/icu-small/source/common/unicode/uniset.h | 476 +- deps/icu-small/source/common/unicode/unistr.h | 420 +- deps/icu-small/source/common/unicode/unorm2.h | 6 +- .../icu-small/source/common/unicode/urename.h | 2 + deps/icu-small/source/common/unicode/ures.h | 92 +- .../icu-small/source/common/unicode/uscript.h | 7 +- deps/icu-small/source/common/unicode/uset.h | 64 +- .../source/common/unicode/usetiter.h | 6 +- .../icu-small/source/common/unicode/ustring.h | 254 +- deps/icu-small/source/common/unicode/utext.h | 58 +- .../source/common/unicode/utfiterator.h | 172 +- .../source/common/unicode/utfstring.h | 12 +- deps/icu-small/source/common/unicode/utypes.h | 28 + .../icu-small/source/common/unicode/uvernum.h | 12 +- .../source/common/unicode/uversion.h | 4 +- deps/icu-small/source/common/unifilt.cpp | 2 +- deps/icu-small/source/common/unifunct.cpp | 4 +- deps/icu-small/source/common/uniset.cpp | 66 +- .../source/common/uniset_closure.cpp | 17 +- deps/icu-small/source/common/uniset_props.cpp | 1663 ++-- deps/icu-small/source/common/unistr.cpp | 117 +- deps/icu-small/source/common/unistr_case.cpp | 12 +- .../source/common/unistr_case_locale.cpp | 16 +- deps/icu-small/source/common/unistr_props.cpp | 2 +- .../common/unistr_titlecase_brkiter.cpp | 14 +- deps/icu-small/source/common/uprops.cpp | 7 +- deps/icu-small/source/common/uresbund.cpp | 220 +- deps/icu-small/source/common/uresimp.h | 56 +- .../icu-small/source/common/uscript_props.cpp | 5 +- deps/icu-small/source/common/uset.cpp | 4 +- deps/icu-small/source/common/usetiter.cpp | 4 +- deps/icu-small/source/common/ushape.cpp | 7 +- deps/icu-small/source/common/ustr_cnv.cpp | 22 +- .../source/common/ustr_titlecase_brkiter.cpp | 34 +- deps/icu-small/source/common/ustr_wcs.cpp | 18 +- deps/icu-small/source/common/ustrenum.cpp | 36 +- deps/icu-small/source/common/ustrenum.h | 4 +- deps/icu-small/source/common/ustring.cpp | 95 +- deps/icu-small/source/common/ustrtrns.cpp | 142 +- deps/icu-small/source/common/utext.cpp | 60 +- deps/icu-small/source/common/uts46.cpp | 124 +- .../in/{icudt78l.dat.bz2 => icudt79l.dat.bz2} | Bin 11344770 -> 11409558 bytes deps/icu-small/source/i18n/alphaindex.cpp | 3 +- deps/icu-small/source/i18n/anytrans.cpp | 4 +- deps/icu-small/source/i18n/astro.cpp | 10 - deps/icu-small/source/i18n/astro.h | 2 +- deps/icu-small/source/i18n/calendar.cpp | 3 + deps/icu-small/source/i18n/chnsecal.cpp | 6 +- deps/icu-small/source/i18n/coll.cpp | 5 +- .../source/i18n/collationbuilder.cpp | 6 +- deps/icu-small/source/i18n/collationbuilder.h | 15 +- .../source/i18n/collationdatabuilder.cpp | 8 +- .../source/i18n/collationfastlatin.cpp | 23 +- deps/icu-small/source/i18n/collationfcd.cpp | 42 +- deps/icu-small/source/i18n/collationfcd.h | 18 + .../icu-small/source/i18n/collationiterator.h | 16 + deps/icu-small/source/i18n/collationkeys.cpp | 6 +- deps/icu-small/source/i18n/collationkeys.h | 7 +- .../source/i18n/collationsettings.cpp | 4 + .../icu-small/source/i18n/collationsettings.h | 4 + deps/icu-small/source/i18n/collunsafe.h | 205 +- deps/icu-small/source/i18n/csdetect.cpp | 4 +- deps/icu-small/source/i18n/csdetect.h | 2 +- deps/icu-small/source/i18n/curramt.cpp | 4 +- deps/icu-small/source/i18n/currunit.cpp | 2 +- deps/icu-small/source/i18n/datefmt.cpp | 32 +- deps/icu-small/source/i18n/dayperiodrules.cpp | 14 +- deps/icu-small/source/i18n/dcfmtsym.cpp | 4 + .../double-conversion-double-to-string.cpp | 3 +- .../i18n/double-conversion-double-to-string.h | 13 + deps/icu-small/source/i18n/dtfmtsym.cpp | 287 +- deps/icu-small/source/i18n/dtptngen.cpp | 56 +- deps/icu-small/source/i18n/dtptngen_impl.h | 4 +- deps/icu-small/source/i18n/erarules.cpp | 118 +- deps/icu-small/source/i18n/erarules.h | 48 +- deps/icu-small/source/i18n/formattedvalue.cpp | 7 + deps/icu-small/source/i18n/gregocal.cpp | 42 +- deps/icu-small/source/i18n/hebrwcal.cpp | 18 +- deps/icu-small/source/i18n/inputext.cpp | 12 +- deps/icu-small/source/i18n/inputext.h | 2 +- deps/icu-small/source/i18n/japancal.cpp | 117 +- deps/icu-small/source/i18n/japancal.h | 2 +- deps/icu-small/source/i18n/measunit.cpp | 209 +- deps/icu-small/source/i18n/messageformat2.cpp | 750 +- .../source/i18n/messageformat2_allocation.h | 12 + .../source/i18n/messageformat2_data_model.cpp | 2 +- .../source/i18n/messageformat2_errors.cpp | 13 +- .../source/i18n/messageformat2_errors.h | 13 +- .../source/i18n/messageformat2_evaluation.cpp | 635 +- .../source/i18n/messageformat2_evaluation.h | 257 +- .../i18n/messageformat2_formattable.cpp | 148 +- .../source/i18n/messageformat2_formatter.cpp | 298 +- .../i18n/messageformat2_function_registry.cpp | 2080 +++-- ...essageformat2_function_registry_internal.h | 413 +- .../source/i18n/messageformat2_macros.h | 3 +- .../source/i18n/messageformat2_parser.cpp | 37 +- .../source/i18n/messageformat2_serializer.h | 2 - deps/icu-small/source/i18n/msgfmt.cpp | 2 +- deps/icu-small/source/i18n/msgfmt_impl.h | 2 +- deps/icu-small/source/i18n/nfrs.cpp | 9 +- deps/icu-small/source/i18n/nfrs.h | 11 +- deps/icu-small/source/i18n/nfrule.cpp | 433 +- deps/icu-small/source/i18n/nfrule.h | 18 +- deps/icu-small/source/i18n/nfsubs.cpp | 10 +- deps/icu-small/source/i18n/number_capi.cpp | 3 + .../source/i18n/number_decimalquantity.h | 1 - .../source/i18n/number_formatimpl.cpp | 38 +- deps/icu-small/source/i18n/number_mapper.cpp | 2 +- .../source/i18n/number_skeletons.cpp | 28 +- .../source/i18n/number_usageprefs.cpp | 1 - .../icu-small/source/i18n/number_usageprefs.h | 2 +- deps/icu-small/source/i18n/numfmt.cpp | 8 + .../icu-small/source/i18n/numparse_currency.h | 2 +- deps/icu-small/source/i18n/numparse_symbols.h | 8 +- deps/icu-small/source/i18n/numrange_impl.cpp | 4 +- deps/icu-small/source/i18n/numrange_impl.h | 3 +- deps/icu-small/source/i18n/numsys.cpp | 2 +- deps/icu-small/source/i18n/numsys_impl.h | 2 +- deps/icu-small/source/i18n/olsontz.cpp | 2 +- deps/icu-small/source/i18n/olsontz.h | 2 +- deps/icu-small/source/i18n/plurfmt.cpp | 111 +- deps/icu-small/source/i18n/plurrule.cpp | 6 +- deps/icu-small/source/i18n/plurrule_impl.h | 4 +- deps/icu-small/source/i18n/rbnf.cpp | 356 +- deps/icu-small/source/i18n/rbt_pars.cpp | 88 +- deps/icu-small/source/i18n/rbt_rule.cpp | 23 +- deps/icu-small/source/i18n/rbt_rule.h | 20 +- deps/icu-small/source/i18n/region.cpp | 2 +- deps/icu-small/source/i18n/region_impl.h | 2 +- .../source/i18n/rulebasedcollator.cpp | 5 +- deps/icu-small/source/i18n/scriptset.cpp | 3 +- deps/icu-small/source/i18n/smpdtfmt.cpp | 138 +- deps/icu-small/source/i18n/timezone.cpp | 10 +- deps/icu-small/source/i18n/tmutfmt.cpp | 4 + deps/icu-small/source/i18n/transreg.cpp | 16 +- deps/icu-small/source/i18n/transreg.h | 8 +- deps/icu-small/source/i18n/tzfmt.cpp | 12 +- deps/icu-small/source/i18n/tzgnames.cpp | 8 +- deps/icu-small/source/i18n/tznames_impl.cpp | 19 +- deps/icu-small/source/i18n/ucln_in.h | 1 + deps/icu-small/source/i18n/ucol_sit.cpp | 5 +- deps/icu-small/source/i18n/ucsdet.cpp | 2 +- deps/icu-small/source/i18n/udat.cpp | 20 +- deps/icu-small/source/i18n/udatpg.cpp | 2 +- .../source/i18n/uitercollationiterator.cpp | 3 +- deps/icu-small/source/i18n/unicode/calendar.h | 1 - deps/icu-small/source/i18n/unicode/coleitr.h | 1 - deps/icu-small/source/i18n/unicode/curramt.h | 8 +- deps/icu-small/source/i18n/unicode/currunit.h | 6 +- deps/icu-small/source/i18n/unicode/dtfmtsym.h | 48 + deps/icu-small/source/i18n/unicode/dtitvfmt.h | 3 - deps/icu-small/source/i18n/unicode/dtptngen.h | 8 +- deps/icu-small/source/i18n/unicode/measunit.h | 78 +- .../source/i18n/unicode/messageformat2.h | 186 +- .../i18n/unicode/messageformat2_data_model.h | 8 +- .../i18n/unicode/messageformat2_formattable.h | 423 +- .../messageformat2_function_registry.h | 591 +- .../source/i18n/unicode/numberformatter.h | 4 +- deps/icu-small/source/i18n/unicode/numfmt.h | 6 +- deps/icu-small/source/i18n/unicode/plurfmt.h | 1 + deps/icu-small/source/i18n/unicode/rbnf.h | 43 +- deps/icu-small/source/i18n/unicode/rbtz.h | 6 +- deps/icu-small/source/i18n/unicode/search.h | 3 +- deps/icu-small/source/i18n/unicode/smpdtfmt.h | 2 + deps/icu-small/source/i18n/unicode/stsearch.h | 3 +- deps/icu-small/source/i18n/unicode/tblcoll.h | 1 - deps/icu-small/source/i18n/unicode/timezone.h | 15 +- deps/icu-small/source/i18n/unicode/translit.h | 8 +- deps/icu-small/source/i18n/unicode/tzfmt.h | 2 - deps/icu-small/source/i18n/unicode/tznames.h | 2 +- deps/icu-small/source/i18n/unicode/ucal.h | 2 +- deps/icu-small/source/i18n/unicode/vtzone.h | 6 +- deps/icu-small/source/i18n/uregex.cpp | 2 +- deps/icu-small/source/i18n/usearch.cpp | 26 +- deps/icu-small/source/i18n/uspoof.cpp | 2 +- deps/icu-small/source/i18n/uspoof_impl.cpp | 8 +- .../source/i18n/utf16collationiterator.cpp | 15 +- deps/icu-small/source/i18n/vtzone.cpp | 4 +- deps/icu-small/source/i18n/vzone.cpp | 42 +- deps/icu-small/source/i18n/vzone.h | 6 +- deps/icu-small/source/i18n/windtfmt.cpp | 6 +- deps/icu-small/source/i18n/windtfmt.h | 6 +- deps/icu-small/source/i18n/winnmfmt.cpp | 18 +- deps/icu-small/source/i18n/winnmfmt.h | 12 +- deps/icu-small/source/i18n/zonemeta.cpp | 2 +- deps/icu-small/source/i18n/zrule.cpp | 8 +- .../source/tools/escapesrc/escapesrc.cpp | 19 +- deps/icu-small/source/tools/genrb/genrb.cpp | 12 +- deps/icu-small/source/tools/genrb/genrb.h | 13 - deps/icu-small/source/tools/genrb/parse.cpp | 69 +- deps/icu-small/source/tools/genrb/reslist.cpp | 20 +- deps/icu-small/source/tools/genrb/reslist.h | 53 +- .../tools/icuexportdata/icuexportdata.cpp | 593 +- .../source/tools/toolutil/dbgutil.cpp | 8 +- .../icu-small/source/tools/toolutil/dbgutil.h | 4 +- .../source/tools/toolutil/json-json.hpp | 12 +- .../icu-small/source/tools/toolutil/package.h | 2 +- tools/icu/current_ver.dep | 4 +- 356 files changed, 18462 insertions(+), 14901 deletions(-) rename deps/icu-small/source/data/in/{icudt78l.dat.bz2 => icudt79l.dat.bz2} (57%) diff --git a/deps/icu-small/LICENSE b/deps/icu-small/LICENSE index 5a2eda629500..fec99457b941 100644 --- a/deps/icu-small/LICENSE +++ b/deps/icu-small/LICENSE @@ -2,7 +2,7 @@ UNICODE LICENSE V3 COPYRIGHT AND PERMISSION NOTICE -Copyright © 2016-2025 Unicode, Inc. +Copyright © 1991-2026 Unicode, Inc. NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR diff --git a/deps/icu-small/README-FULL-ICU.txt b/deps/icu-small/README-FULL-ICU.txt index 882e0f28b624..c7ecb26f30a9 100644 --- a/deps/icu-small/README-FULL-ICU.txt +++ b/deps/icu-small/README-FULL-ICU.txt @@ -1,8 +1,8 @@ ICU sources - auto generated by shrink-icu-src.py This directory contains the ICU subset used by --with-intl=full-icu -It is a strict subset of ICU 78 source files with the following exception(s): -* deps/icu-small/source/data/in/icudt78l.dat.bz2 : compressed data file +It is a strict subset of ICU 79 source files with the following exception(s): +* deps/icu-small/source/data/in/icudt79l.dat.bz2 : compressed data file To rebuild this directory, see ../../tools/icu/README.md diff --git a/deps/icu-small/source/.clang-format b/deps/icu-small/source/.clang-format index 83cbf646a43d..a45d0fc26ffb 100644 --- a/deps/icu-small/source/.clang-format +++ b/deps/icu-small/source/.clang-format @@ -5,7 +5,7 @@ Language: Cpp BasedOnStyle: LLVM IndentWidth: 4 -ColumnLimit: 105 +ColumnLimit: 100 AllowShortBlocksOnASingleLine: false AllowShortIfStatementsOnASingleLine: true ... diff --git a/deps/icu-small/source/common/BUILD.bazel b/deps/icu-small/source/common/BUILD.bazel index e894ed907e6e..959e20da994b 100644 --- a/deps/icu-small/source/common/BUILD.bazel +++ b/deps/icu-small/source/common/BUILD.bazel @@ -36,6 +36,9 @@ cc_library( # Bazel workspace: # https://stackoverflow.com/a/65635893/2077918 includes = ["."], + defines = [ + "U_DEBUG", # enable U_ASSERT() + ], local_defines = [ "U_COMMON_IMPLEMENTATION", ], diff --git a/deps/icu-small/source/common/appendable.cpp b/deps/icu-small/source/common/appendable.cpp index de18148fe6d6..c59d02298828 100644 --- a/deps/icu-small/source/common/appendable.cpp +++ b/deps/icu-small/source/common/appendable.cpp @@ -56,11 +56,12 @@ Appendable::reserveAppendCapacity(int32_t /*appendCapacity*/) { return true; } -char16_t * +char16_t* Appendable::getAppendBuffer(int32_t minCapacity, int32_t /*desiredCapacityHint*/, - char16_t *scratch, int32_t scratchCapacity, - int32_t *resultCapacity) { + char16_t* scratch U_LIFETIME_BOUND, + int32_t scratchCapacity, + int32_t* resultCapacity) U_LIFETIME_BOUND { if(minCapacity<1 || scratchCapacitykMaxBranchLinearSubNodeLength) { ++pos; // ignore the comparison byte if(nullptr==findUniqueValueFromBranch(jumpByDelta(pos), length>>1, haveUniqueValue, uniqueValue)) { diff --git a/deps/icu-small/source/common/bytestriebuilder.cpp b/deps/icu-small/source/common/bytestriebuilder.cpp index 03bbc28e6577..c11aaad5fd50 100644 --- a/deps/icu-small/source/common/bytestriebuilder.cpp +++ b/deps/icu-small/source/common/bytestriebuilder.cpp @@ -39,7 +39,7 @@ class BytesTrieElement : public UMemory { void setTo(StringPiece s, int32_t val, CharString &strings, UErrorCode &errorCode); - StringPiece getString(const CharString &strings) const { + StringPiece getString(const CharString& strings U_LIFETIME_BOUND) const { int32_t offset=stringOffset; int32_t length; if(offset>=0) { @@ -68,7 +68,7 @@ class BytesTrieElement : public UMemory { int32_t compareStringTo(const BytesTrieElement &o, const CharString &strings) const; private: - const char *data(const CharString &strings) const { + const char* data(const CharString& strings U_LIFETIME_BOUND) const { int32_t offset=stringOffset; if(offset>=0) { ++offset; @@ -144,8 +144,8 @@ BytesTrieBuilder::~BytesTrieBuilder() { uprv_free(bytes); } -BytesTrieBuilder & -BytesTrieBuilder::add(StringPiece s, int32_t value, UErrorCode &errorCode) { +BytesTrieBuilder& +BytesTrieBuilder::add(StringPiece s, int32_t value, UErrorCode& errorCode) U_LIFETIME_BOUND { if(U_FAILURE(errorCode)) { return *this; } @@ -206,7 +206,8 @@ BytesTrieBuilder::build(UStringTrieBuildOption buildOption, UErrorCode &errorCod } StringPiece -BytesTrieBuilder::buildStringPiece(UStringTrieBuildOption buildOption, UErrorCode &errorCode) { +BytesTrieBuilder::buildStringPiece(UStringTrieBuildOption buildOption, + UErrorCode& errorCode) U_LIFETIME_BOUND { buildBytes(buildOption, errorCode); StringPiece result; if(U_SUCCESS(errorCode)) { @@ -269,8 +270,8 @@ BytesTrieBuilder::buildBytes(UStringTrieBuildOption buildOption, UErrorCode &err } } -BytesTrieBuilder & -BytesTrieBuilder::clear() { +BytesTrieBuilder& +BytesTrieBuilder::clear() U_LIFETIME_BOUND { strings->clear(); elementsLength=0; bytesLength=0; diff --git a/deps/icu-small/source/common/bytestrieiterator.cpp b/deps/icu-small/source/common/bytestrieiterator.cpp index b60806f1f357..35747c6458d1 100644 --- a/deps/icu-small/source/common/bytestrieiterator.cpp +++ b/deps/icu-small/source/common/bytestrieiterator.cpp @@ -22,8 +22,9 @@ U_NAMESPACE_BEGIN -BytesTrie::Iterator::Iterator(const void *trieBytes, int32_t maxStringLength, - UErrorCode &errorCode) +BytesTrie::Iterator::Iterator(const void* trieBytes U_LIFETIME_BOUND, + int32_t maxStringLength, + UErrorCode& errorCode) : bytes_(static_cast(trieBytes)), pos_(bytes_), initialPos_(bytes_), remainingMatchLength_(-1), initialRemainingMatchLength_(-1), @@ -80,8 +81,8 @@ BytesTrie::Iterator::~Iterator() { delete stack_; } -BytesTrie::Iterator & -BytesTrie::Iterator::reset() { +BytesTrie::Iterator& +BytesTrie::Iterator::reset() U_LIFETIME_BOUND { pos_=initialPos_; remainingMatchLength_=initialRemainingMatchLength_; int32_t length=remainingMatchLength_+1; // Remaining match length. @@ -169,7 +170,7 @@ BytesTrie::Iterator::next(UErrorCode &errorCode) { } StringPiece -BytesTrie::Iterator::getString() const { +BytesTrie::Iterator::getString() const U_LIFETIME_BOUND { return str_ == nullptr ? StringPiece() : str_->toStringPiece(); } @@ -181,8 +182,10 @@ BytesTrie::Iterator::truncateAndStop() { } // Branch node, needs to take the first outbound edge and push state for the rest. -const uint8_t * -BytesTrie::Iterator::branchNext(const uint8_t *pos, int32_t length, UErrorCode &errorCode) { +const uint8_t* +BytesTrie::Iterator::branchNext(const uint8_t* pos U_LIFETIME_BOUND, + int32_t length, + UErrorCode& errorCode) { while(length>kMaxBranchLinearSubNodeLength) { ++pos; // ignore the comparison byte // Push state for the greater-or-equal edge. diff --git a/deps/icu-small/source/common/caniter.cpp b/deps/icu-small/source/common/caniter.cpp index 1b2bc2ada0c9..fd9640df2cda 100644 --- a/deps/icu-small/source/common/caniter.cpp +++ b/deps/icu-small/source/common/caniter.cpp @@ -440,8 +440,10 @@ UnicodeString* CanonicalIterator::getEquivalents(const UnicodeString &segment, i return finalResult; } -Hashtable *CanonicalIterator::getEquivalents2(Hashtable *fillinResult, const char16_t *segment, int32_t segLen, UErrorCode &status) { - +Hashtable* CanonicalIterator::getEquivalents2(Hashtable* fillinResult U_LIFETIME_BOUND, + const char16_t* segment, + int32_t segLen, + UErrorCode& status) { if (U_FAILURE(status)) { return nullptr; } @@ -518,7 +520,12 @@ Hashtable *CanonicalIterator::getEquivalents2(Hashtable *fillinResult, const cha * (with canonical rearrangement!) * If so, take the remainder, and return the equivalents */ -Hashtable *CanonicalIterator::extract(Hashtable *fillinResult, UChar32 comp, const char16_t *segment, int32_t segLen, int32_t segmentPos, UErrorCode &status) { +Hashtable* CanonicalIterator::extract(Hashtable* fillinResult U_LIFETIME_BOUND, + UChar32 comp, + const char16_t* segment, + int32_t segLen, + int32_t segmentPos, + UErrorCode& status) { //Hashtable *CanonicalIterator::extract(UChar32 comp, const UnicodeString &segment, int32_t segLen, int32_t segmentPos, UErrorCode &status) { //if (PROGRESS) printf(" extract: %s, ", UToS(Tr(UnicodeString(comp)))); //if (PROGRESS) printf("%s, %i\n", UToS(Tr(segment)), segmentPos); diff --git a/deps/icu-small/source/common/chariter.cpp b/deps/icu-small/source/common/chariter.cpp index 16f3b1e14d0b..565ce69cf28c 100644 --- a/deps/icu-small/source/common/chariter.cpp +++ b/deps/icu-small/source/common/chariter.cpp @@ -73,8 +73,8 @@ textLength(that.textLength), pos(that.pos), begin(that.begin), end(that.end) { } -CharacterIterator & -CharacterIterator::operator=(const CharacterIterator &that) { +CharacterIterator& +CharacterIterator::operator=(const CharacterIterator& that) U_LIFETIME_BOUND { ForwardCharacterIterator::operator=(that); textLength = that.textLength; pos = that.pos; diff --git a/deps/icu-small/source/common/charstr.cpp b/deps/icu-small/source/common/charstr.cpp index dadc829b0b56..f956c419d84e 100644 --- a/deps/icu-small/source/common/charstr.cpp +++ b/deps/icu-small/source/common/charstr.cpp @@ -21,6 +21,7 @@ #include "charstr.h" #include "cmemory.h" #include "cstring.h" +#include "putilimp.h" #include "uinvchar.h" #include "ustr_imp.h" @@ -111,7 +112,15 @@ CharString &CharString::truncate(int32_t newLength) { } CharString &CharString::append(char c, UErrorCode &errorCode) { - if(ensureCapacity(len+2, 0, errorCode)) { + if(U_FAILURE(errorCode)) { + return *this; + } + int32_t newCapacity; + if (uprv_add32_overflow(len, 2, &newCapacity)) { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return *this; + } + if(ensureCapacity(newCapacity, 0, errorCode)) { buffer[len++]=c; buffer[len]=0; } @@ -138,15 +147,21 @@ CharString &CharString::append(const char *s, int32_t sLength, UErrorCode &error } else { buffer[len+=sLength]=0; } - } else if(buffer.getAlias()<=s && s<(buffer.getAlias()+len) && - sLength>=(buffer.getCapacity()-len) - ) { - // (Part of) this string is appended to itself which requires reallocation, - // so we have to make a copy of the substring and append that. - return append(CharString(s, sLength, errorCode), errorCode); - } else if(ensureCapacity(len+sLength+1, 0, errorCode)) { - uprv_memcpy(buffer.getAlias()+len, s, sLength); - buffer[len+=sLength]=0; + } else { + int32_t newCapacity; + if(uprv_add32_overflow(len, sLength, &newCapacity) || + uprv_add32_overflow(newCapacity, 1, &newCapacity)) { + errorCode=U_ILLEGAL_ARGUMENT_ERROR; + } else if(buffer.getAlias()<=s && s<(buffer.getAlias()+len) && + newCapacity>buffer.getCapacity() + ) { + // (Part of) this string is appended to itself which requires reallocation, + // so we have to make a copy of the substring and append that. + return append(CharString(s, sLength, errorCode), errorCode); + } else if(ensureCapacity(newCapacity, 0, errorCode)) { + uprv_memcpy(buffer.getAlias()+len, s, sLength); + buffer[len+=sLength]=0; + } } } return *this; @@ -192,12 +207,30 @@ char *CharString::getAppendBuffer(int32_t minCapacity, resultCapacity=0; return nullptr; } + if(minCapacity<0 || desiredCapacityHint<0) { + errorCode=U_ILLEGAL_ARGUMENT_ERROR; + resultCapacity=0; + return nullptr; + } int32_t appendCapacity=buffer.getCapacity()-len-1; // -1 for NUL if(appendCapacity>=minCapacity) { resultCapacity=appendCapacity; return buffer.getAlias()+len; } - if(ensureCapacity(len+minCapacity+1, len+desiredCapacityHint+1, errorCode)) { + int32_t newCapacity; + if(uprv_add32_overflow(len, minCapacity, &newCapacity) || + uprv_add32_overflow(newCapacity, 1, &newCapacity)) { + errorCode=U_ILLEGAL_ARGUMENT_ERROR; + resultCapacity=0; + return nullptr; + } + int32_t newDesiredCapacity = 0; + if(desiredCapacityHint > 0 && + (uprv_add32_overflow(len, desiredCapacityHint, &newDesiredCapacity) || + uprv_add32_overflow(newDesiredCapacity, 1, &newDesiredCapacity))) { + newDesiredCapacity = 0; + } + if(ensureCapacity(newCapacity, newDesiredCapacity, errorCode)) { resultCapacity=buffer.getCapacity()-len-1; return buffer.getAlias()+len; } @@ -213,11 +246,21 @@ CharString &CharString::appendInvariantChars(const char16_t* uchars, int32_t uch if(U_FAILURE(errorCode)) { return *this; } + if(ucharsLen < 0 || (uchars == nullptr && ucharsLen != 0)) { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return *this; + } if (!uprv_isInvariantUString(uchars, ucharsLen)) { errorCode = U_INVARIANT_CONVERSION_ERROR; return *this; } - if(ensureCapacity(len+ucharsLen+1, 0, errorCode)) { + int32_t newCapacity; + if (uprv_add32_overflow(len, ucharsLen, &newCapacity) || + uprv_add32_overflow(newCapacity, 1, &newCapacity)) { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return *this; + } + if(ensureCapacity(newCapacity, 0, errorCode)) { u_UCharsToChars(uchars, buffer.getAlias()+len, ucharsLen); len += ucharsLen; buffer[len] = 0; @@ -231,9 +274,17 @@ UBool CharString::ensureCapacity(int32_t capacity, if(U_FAILURE(errorCode)) { return false; } + if(capacity<0) { + errorCode=U_ILLEGAL_ARGUMENT_ERROR; + return false; + } if(capacity>buffer.getCapacity()) { if(desiredCapacityHint==0) { - desiredCapacityHint=capacity+buffer.getCapacity(); + // Default growth heuristic. If it overflows, skip the extra headroom + // and allocate exactly the requested capacity, which is still valid. + if(uprv_add32_overflow(capacity, buffer.getCapacity(), &desiredCapacityHint)) { + desiredCapacityHint=0; + } } if( (desiredCapacityHint<=capacity || buffer.resize(desiredCapacityHint, len+1)==nullptr) && buffer.resize(capacity, len+1)==nullptr diff --git a/deps/icu-small/source/common/cmemory.h b/deps/icu-small/source/common/cmemory.h index e31c54aac709..fc0276fec58f 100644 --- a/deps/icu-small/source/common/cmemory.h +++ b/deps/icu-small/source/common/cmemory.h @@ -28,6 +28,7 @@ #include "unicode/utypes.h" +#include #include #include #include "unicode/localpointer.h" @@ -171,17 +172,23 @@ uprv_deleteUObject(void *obj); #ifdef __cplusplus +#include #include +#include #include "unicode/uobject.h" U_NAMESPACE_BEGIN /** * "Smart pointer" class, deletes memory via uprv_free(). + * ICU 79+: Use prv::make_unique & prv::make_unique_for_overwrite instead. + * * For most methods see the LocalPointerBase base class. * Adds operator[] for array item access. * * @see LocalPointerBase + * @see prv::make_unique + * @deprecated use prv::make_unique & prv::make_unique_for_overwrite */ template class LocalMemory : public LocalPointerBase { @@ -212,7 +219,7 @@ class LocalMemory : public LocalPointerBase { * @param src source smart pointer * @return *this */ - LocalMemory &operator=(LocalMemory &&src) noexcept { + LocalMemory& operator=(LocalMemory&& src) noexcept U_LIFETIME_BOUND { uprv_free(LocalPointerBase::ptr); LocalPointerBase::ptr=src.ptr; src.ptr=nullptr; @@ -252,7 +259,7 @@ class LocalMemory : public LocalPointerBase { * @param newCapacity must be >0 * @return the allocated array pointer, or nullptr if the allocation failed */ - inline T *allocateInsteadAndReset(int32_t newCapacity=1); + inline T* allocateInsteadAndReset(int32_t newCapacity = 1) U_LIFETIME_BOUND; /** * Deletes the array it owns and allocates a new one, copying length T items. * Returns the new array pointer. @@ -264,18 +271,18 @@ class LocalMemory : public LocalPointerBase { * which the caller must track because the LocalMemory does not track it * @return the allocated array pointer, or nullptr if the allocation failed */ - inline T *allocateInsteadAndCopy(int32_t newCapacity=1, int32_t length=0); + inline T* allocateInsteadAndCopy(int32_t newCapacity = 1, int32_t length = 0) U_LIFETIME_BOUND; /** * Array item access (writable). * No index bounds check. * @param i array index * @return reference to the array item */ - T &operator[](ptrdiff_t i) const { return LocalPointerBase::ptr[i]; } + T& operator[](ptrdiff_t i) const U_LIFETIME_BOUND { return LocalPointerBase::ptr[i]; } }; -template -inline T *LocalMemory::allocateInsteadAndReset(int32_t newCapacity) { +template +inline T* LocalMemory::allocateInsteadAndReset(int32_t newCapacity) U_LIFETIME_BOUND { if(newCapacity>0) { T *p=(T *)uprv_malloc(newCapacity*sizeof(T)); if(p!=nullptr) { @@ -289,9 +296,9 @@ inline T *LocalMemory::allocateInsteadAndReset(int32_t newCapacity) { } } - -template -inline T *LocalMemory::allocateInsteadAndCopy(int32_t newCapacity, int32_t length) { +template +inline T* LocalMemory::allocateInsteadAndCopy(int32_t newCapacity, + int32_t length) U_LIFETIME_BOUND { if(newCapacity>0) { T *p=(T *)uprv_malloc(newCapacity*sizeof(T)); if(p!=nullptr) { @@ -366,7 +373,8 @@ class MaybeStackArray { /** * Move assignment: transfers ownership or copies the stack array. */ - MaybeStackArray &operator=(MaybeStackArray &&src) noexcept; + MaybeStackArray& + operator=(MaybeStackArray&& src) noexcept U_LIFETIME_BOUND; /** * Returns the array capacity (number of T items). * @return array capacity @@ -376,12 +384,12 @@ class MaybeStackArray { * Access without ownership change. * @return the array pointer */ - T *getAlias() const { return ptr; } + T* getAlias() const U_LIFETIME_BOUND { return ptr; } /** * Returns the array limit. Simple convenience method. * @return getAlias()+getCapacity() */ - T *getArrayLimit() const { return getAlias()+capacity; } + T* getArrayLimit() const U_LIFETIME_BOUND { return getAlias() + capacity; } // No "operator T *() const" because that can make // expressions like mbs[index] ambiguous for some compilers. /** @@ -390,14 +398,14 @@ class MaybeStackArray { * @param i array index * @return reference to the array item */ - const T &operator[](ptrdiff_t i) const { return ptr[i]; } + const T& operator[](ptrdiff_t i) const U_LIFETIME_BOUND { return ptr[i]; } /** * Array item access (writable). * No index bounds check. * @param i array index * @return reference to the array item */ - T &operator[](ptrdiff_t i) { return ptr[i]; } + T& operator[](ptrdiff_t i) U_LIFETIME_BOUND { return ptr[i]; } /** * Deletes the array (if owned) and aliases another one, no transfer of ownership. * If the arguments are illegal, then the current array is unchanged. @@ -422,7 +430,7 @@ class MaybeStackArray { * @param length number of T items to be copied from the old array to the new one * @return the allocated array pointer, or nullptr if the allocation failed */ - inline T *resize(int32_t newCapacity, int32_t length=0); + inline T* resize(int32_t newCapacity, int32_t length = 0) U_LIFETIME_BOUND; /** * Gives up ownership of the array if owned, or else clones it, * copying length T items; resets itself to the internal stack array. @@ -483,9 +491,9 @@ icu::MaybeStackArray::MaybeStackArray( } } -template -inline MaybeStackArray & -MaybeStackArray::operator=(MaybeStackArray && src) noexcept { +template +inline MaybeStackArray& MaybeStackArray::operator=( + MaybeStackArray&& src) noexcept U_LIFETIME_BOUND { releaseArray(); // in case this instance had its own memory allocated capacity = src.capacity; needToRelease = src.needToRelease; @@ -499,8 +507,9 @@ MaybeStackArray::operator=(MaybeStackArray & return *this; } -template -inline T *MaybeStackArray::resize(int32_t newCapacity, int32_t length) { +template +inline T* MaybeStackArray::resize(int32_t newCapacity, + int32_t length) U_LIFETIME_BOUND { if(newCapacity>0) { #if U_DEBUG && defined(UPRV_MALLOC_COUNT) ::fprintf(::stderr, "MaybeStackArray (resize) alloc %d * %lu\n", newCapacity, sizeof(T)); @@ -587,30 +596,30 @@ class MaybeStackHeaderAndArray { * Access without ownership change. * @return the header pointer */ - H *getAlias() const { return ptr; } + H* getAlias() const U_LIFETIME_BOUND { return ptr; } /** * Returns the array start. * @return array start, same address as getAlias()+1 */ - T *getArrayStart() const { return reinterpret_cast(getAlias()+1); } + T* getArrayStart() const U_LIFETIME_BOUND { return reinterpret_cast(getAlias() + 1); } /** * Returns the array limit. * @return array limit */ - T *getArrayLimit() const { return getArrayStart()+capacity; } + T* getArrayLimit() const U_LIFETIME_BOUND { return getArrayStart() + capacity; } /** * Access without ownership change. Same as getAlias(). * A class instance can be used directly in expressions that take a T *. * @return the header pointer */ - operator H *() const { return ptr; } + operator H*() const U_LIFETIME_BOUND { return ptr; } /** * Array item access (writable). * No index bounds check. * @param i array index * @return reference to the array item */ - T &operator[](ptrdiff_t i) { return getArrayStart()[i]; } + T& operator[](ptrdiff_t i) U_LIFETIME_BOUND { return getArrayStart()[i]; } /** * Deletes the memory block (if owned) and aliases another one, no transfer of ownership. * If the arguments are illegal, then the current memory is unchanged. @@ -636,7 +645,7 @@ class MaybeStackHeaderAndArray { * @param length number of T items to be copied from the old array to the new one * @return the allocated pointer, or nullptr if the allocation failed */ - inline H *resize(int32_t newCapacity, int32_t length=0); + inline H* resize(int32_t newCapacity, int32_t length = 0) U_LIFETIME_BOUND; /** * Gives up ownership of the memory if owned, or else clones it, * copying the header and length T array items; resets itself to the internal memory. @@ -668,9 +677,9 @@ class MaybeStackHeaderAndArray { void operator=(const MaybeStackHeaderAndArray & /*other*/) {} }; -template -inline H *MaybeStackHeaderAndArray::resize(int32_t newCapacity, - int32_t length) { +template +inline H* MaybeStackHeaderAndArray::resize(int32_t newCapacity, + int32_t length) U_LIFETIME_BOUND { if(newCapacity>=0) { #if U_DEBUG && defined(UPRV_MALLOC_COUNT) ::fprintf(::stderr,"MaybeStackHeaderAndArray alloc %d + %d * %ul\n", sizeof(H),newCapacity,sizeof(T)); @@ -769,7 +778,7 @@ class MemoryPool : public UMemory { other.fCount = 0; } - MemoryPool& operator=(MemoryPool&& other) noexcept { + MemoryPool& operator=(MemoryPool&& other) noexcept U_LIFETIME_BOUND { // Since `this` may contain instances that need to be deleted, we can't // just throw them away and replace them with `other`. The normal way of // dealing with this in C++ is to swap `this` and `other`, rather than @@ -788,8 +797,8 @@ class MemoryPool : public UMemory { * @param args Arguments to be forwarded to the typename T constructor. * @return A pointer to the newly created object, or nullptr on error. */ - template - T* create(Args&&... args) { + template + T* create(Args&&... args) U_LIFETIME_BOUND { int32_t capacity = fPool.getCapacity(); if (fCount == capacity && fPool.resize(capacity == stackCapacity ? 4 * capacity : 2 * capacity, @@ -800,7 +809,7 @@ class MemoryPool : public UMemory { } template - T* createAndCheckErrorCode(UErrorCode &status, Args &&... args) { + T* createAndCheckErrorCode(UErrorCode& status, Args&&... args) U_LIFETIME_BOUND { if (U_FAILURE(status)) { return nullptr; } @@ -846,13 +855,13 @@ class MemoryPool : public UMemory { template class MaybeStackVector : protected MemoryPool { public: - template - T* emplaceBack(Args&&... args) { + template + T* emplaceBack(Args&&... args) U_LIFETIME_BOUND { return this->create(args...); } template - T *emplaceBackAndCheckErrorCode(UErrorCode &status, Args &&... args) { + T* emplaceBackAndCheckErrorCode(UErrorCode& status, Args&&... args) U_LIFETIME_BOUND { return this->createAndCheckErrorCode(status, args...); } @@ -860,11 +869,11 @@ class MaybeStackVector : protected MemoryPool { return this->fCount; } - T** getAlias() { + T** getAlias() U_LIFETIME_BOUND { return this->fPool.getAlias(); } - const T *const *getAlias() const { + const T* const* getAlias() const U_LIFETIME_BOUND { return this->fPool.getAlias(); } @@ -874,7 +883,7 @@ class MaybeStackVector : protected MemoryPool { * @param i array index * @return reference to the array item */ - const T* operator[](ptrdiff_t i) const { + const T* operator[](ptrdiff_t i) const U_LIFETIME_BOUND { return this->fPool[i]; } @@ -884,11 +893,270 @@ class MaybeStackVector : protected MemoryPool { * @param i array index * @return reference to the array item */ - T* operator[](ptrdiff_t i) { + T* operator[](ptrdiff_t i) U_LIFETIME_BOUND { return this->fPool[i]; } }; +namespace prv { + +#if U_OVERRIDE_CXX_ALLOCATION + +/** + * A deleter (as used by std::unique_ptr) that deallocates using `deallocate`. + * @internal + */ +template class Deleter { + public: + Deleter() = default; + void operator()(T *const ptr) const { + if constexpr (!std::is_trivially_destructible_v) { + ptr->~T(); + } + deallocate(ptr); + } +}; + +/** + * A deleter (as used by std::unique_ptr) that deallocates using `deallocate`: specialization for + * arrays of trivially destructible objects, e.g., int32_t[]. + * @internal + */ +template +class Deleter>> { + public: + Deleter() = default; + void operator()(T *const ptr) const { deallocate(ptr); } +}; + +/** + * A deleter (as used by std::unique_ptr) that deallocates using `deallocate`: specialization for + * arrays of nontrivially destructible objects, e.g., UnicodeString[]. + * @internal + */ +template +class Deleter>> { + public: + Deleter(const std::size_t size) : size_(size) {} + void operator()(T *const ptr) const { + for (std::ptrdiff_t i = static_cast(size_) - 1; i >= 0; --i) { + ptr[i]->~T(); + } + deallocate(ptr); + } + private: + const std::size_t size_; +}; + +/** + * An std::unique_ptr that deallocates using uprv_free. + * @internal + */ +template using unique_ptr = std::unique_ptr>; + +#else + +using std::unique_ptr; + +#endif + +/** + * Helper for make_unique; forwards all but the last of args to the constructor of + * T, uses the last of args as the error code for allocation errors. + * + * As usual, does nothing if the incoming UErrorCode already is U_FAILURE. + * + * @internal + */ +template +unique_ptr make_unique_impl(std::tuple args, + std::index_sequence constructor_arg_indices) { + static_assert(std::is_same_v>); + auto &&error = std::get(args); + static_assert(std::is_same_v); + if (U_FAILURE(error)) { + return nullptr; + } +#if U_OVERRIDE_CXX_ALLOCATION + void *const buffer = uprv_malloc(sizeof(T)); + if (buffer == nullptr) { + error = U_MEMORY_ALLOCATION_ERROR; + return nullptr; + } + return unique_ptr(new (buffer) T(std::get(args)...)); +#else + return std::make_unique(std::get(args)...); +#endif +} + +/** + * A version of std::make_unique that is compatible with ICU allocation error handling. + * If U_OVERRIDE_CXX_ALLOCATION, allocates using uprv_malloc, and sets a UErrorCode on failure. + * Otherwise, equivalent to std::make_unique. + * prv::make_unique(Args... args, UErrorCode& status) + * corresponds to + * std::make_unique(Args... args) + * and + * new T(Args... args). + * + * As usual, does nothing if the incoming UErrorCode already is U_FAILURE. + * + * With empty args, this corresponds to new T(), and the allocated object is value-initialized; in + * particular, scalar types are zero-initialized; cf. make_unique_for_overwrite which + * corresponds to new T. + * + * @internal + */ +template >> +unique_ptr make_unique(Args &&...args) { + return make_unique_impl(std::forward_as_tuple(args...), + std::make_index_sequence()); +} + +/** + * A version of std::make_unique that is compatible with ICU allocation error handling. + * If U_OVERRIDE_CXX_ALLOCATION, allocates using uprv_malloc, and sets a UErrorCode on failure. + * Otherwise, equivalent to std::make_unique. + * prv::make_unique(std::size_t n, UErrorCode& status) + * corresponds to + * std::make_unique(std::size_t n) + * and + * new T[std::size_t n](). + * + * As usual, does nothing if the incoming UErrorCode already is U_FAILURE. + * + * The allocated objects are value-initialized; in particular, scalar types are zero-initialized; + * cf. make_unique_for_overwrite which corresponds to new T[n]. + * + * @internal + */ +template . + typename = std::enable_if_t[], T>>> +unique_ptr make_unique(const std::size_t n, UErrorCode &error) { + if (U_FAILURE(error)) { + return nullptr; + } + // In C23/C++26, we could use ckd_mul. + constexpr std::size_t maxSize = SIZE_MAX / sizeof(std::remove_extent_t); + if (n > maxSize) { + error = U_ILLEGAL_ARGUMENT_ERROR; + return nullptr; + } +#if U_OVERRIDE_CXX_ALLOCATION + void *const buffer = uprv_malloc(sizeof(std::remove_extent_t) * n); + if (buffer == nullptr) { + error = U_MEMORY_ALLOCATION_ERROR; + if constexpr (std::is_trivially_destructible_v>) { + return nullptr; + } else { + return unique_ptr(nullptr, Deleter(0)); + } + } + if constexpr (std::is_trivially_destructible_v>) { + return unique_ptr(new (buffer) std::remove_extent_t[n]()); + } else { + return unique_ptr(new (buffer) std::remove_extent_t[n](), Deleter(n)); + } +#else + return std::make_unique(n); +#endif +} + +/** + * A version of std::make_unique_for_overwrite that is compatible with ICU allocation error + * handling. + * If U_OVERRIDE_CXX_ALLOCATION, allocates using uprv_malloc, and sets a UErrorCode on failure. + * Otherwise, equivalent to std::make_unique_for_overwrite. + * prv::make_unique_for_overwrite(UErrorCode& status) + * corresponds to + * std::make_unique_for_overwrite() + * and + * new T. + * + * As usual, does nothing if the incoming UErrorCode already is U_FAILURE. + * + * The allocated object is default-initialized. For some types, e.g., scalar types, this means it + * has an indeterminate value, or an erroneous value since C++26 (in plain English, the memory is + * uninitialized). + * + * @internal + */ +template >> +unique_ptr make_unique_for_overwrite(UErrorCode &error) { + if (U_FAILURE(error)) { + return nullptr; + } +#if U_OVERRIDE_CXX_ALLOCATION + void *const buffer = uprv_malloc(sizeof(T)); + if (buffer == nullptr) { + error = U_MEMORY_ALLOCATION_ERROR; + return nullptr; + } + return unique_ptr(new (buffer) T); +#elif U_CPLUSPLUS_VERSION >= 20 + return std::make_unique_for_overwrite(); +#else + return unique_ptr(new T); +#endif +} + +/** + * A version of std::make_unique_for_overwrite that is compatible with ICU allocation error + * handling. + * If U_OVERRIDE_CXX_ALLOCATION, allocates using uprv_malloc, and sets a UErrorCode on failure. + * Otherwise, equivalent to std::make_unique_for_overwrite. + * prv::make_unique_for_overwrite(std::size_t n, UErrorCode& status) + * corresponds to + * std::make_unique_for_overwrite(std::size_t n) + * and + * new T[std::size_t n]. + * + * As usual, does nothing if the incoming UErrorCode already is U_FAILURE. + * + * The allocated objects are default-initialized. For some types, e.g., scalar types, this means + * they have indeterminate values, or erroneous values since C++26 (in plain English, the memory is + * uninitialized). + * + * @internal + */ +template . + typename = std::enable_if_t[], T>>> +unique_ptr make_unique_for_overwrite(const std::size_t n, UErrorCode &error) { + if (U_FAILURE(error)) { + return nullptr; + } + // In C23/C++26, we could use ckd_mul. + constexpr std::size_t maxSize = SIZE_MAX / sizeof(std::remove_extent_t); + if (n > maxSize) { + error = U_ILLEGAL_ARGUMENT_ERROR; + return nullptr; + } +#if U_OVERRIDE_CXX_ALLOCATION + void *const buffer = uprv_malloc(sizeof(std::remove_extent_t) * n); + if (buffer == nullptr) { + error = U_MEMORY_ALLOCATION_ERROR; + if constexpr (std::is_trivially_destructible_v>) { + return nullptr; + } else { + return unique_ptr(nullptr, Deleter(0)); + } + } + if constexpr (std::is_trivially_destructible_v>) { + return unique_ptr(new (buffer) std::remove_extent_t[n]); + } else { + return unique_ptr(new (buffer) std::remove_extent_t[n], Deleter(n)); + } +#elif U_CPLUSPLUS_VERSION >= 20 + return std::make_unique_for_overwrite(n); +#else + return unique_ptr(new std::remove_extent_t[n]); +#endif +} + +} // namespace prv U_NAMESPACE_END diff --git a/deps/icu-small/source/common/dtintrv.cpp b/deps/icu-small/source/common/dtintrv.cpp index 011ad8136f3b..d15e57e11f03 100644 --- a/deps/icu-small/source/common/dtintrv.cpp +++ b/deps/icu-small/source/common/dtintrv.cpp @@ -38,7 +38,7 @@ DateInterval::DateInterval(const DateInterval& other) DateInterval& -DateInterval::operator=(const DateInterval& other) { +DateInterval::operator=(const DateInterval& other) U_LIFETIME_BOUND { if ( this != &other ) { fromDate = other.fromDate; toDate = other.toDate; diff --git a/deps/icu-small/source/common/edits.cpp b/deps/icu-small/source/common/edits.cpp index 82055e5e543b..be100b005eb0 100644 --- a/deps/icu-small/source/common/edits.cpp +++ b/deps/icu-small/source/common/edits.cpp @@ -41,7 +41,7 @@ void Edits::releaseArray() noexcept { } } -Edits &Edits::copyArray(const Edits &other) { +Edits& Edits::copyArray(const Edits& other) U_LIFETIME_BOUND { if (U_FAILURE(errorCode_)) { length = delta = numChanges = 0; return *this; @@ -63,7 +63,7 @@ Edits &Edits::copyArray(const Edits &other) { return *this; } -Edits &Edits::moveArray(Edits &src) noexcept { +Edits& Edits::moveArray(Edits& src) noexcept U_LIFETIME_BOUND { if (U_FAILURE(errorCode_)) { length = delta = numChanges = 0; return *this; @@ -85,7 +85,7 @@ Edits &Edits::moveArray(Edits &src) noexcept { return *this; } -Edits &Edits::operator=(const Edits &other) { +Edits& Edits::operator=(const Edits& other) U_LIFETIME_BOUND { if (this == &other) { return *this; } // self-assignment: no-op length = other.length; delta = other.delta; @@ -94,7 +94,7 @@ Edits &Edits::operator=(const Edits &other) { return copyArray(other); } -Edits &Edits::operator=(Edits &&src) noexcept { +Edits& Edits::operator=(Edits&& src) noexcept U_LIFETIME_BOUND { length = src.length; delta = src.delta; numChanges = src.numChanges; @@ -251,7 +251,9 @@ UBool Edits::copyErrorTo(UErrorCode &outErrorCode) const { return true; } -Edits &Edits::mergeAndAppend(const Edits &ab, const Edits &bc, UErrorCode &errorCode) { +Edits& Edits::mergeAndAppend(const Edits& ab, + const Edits& bc, + UErrorCode& errorCode) U_LIFETIME_BOUND { if (copyErrorTo(errorCode)) { return *this; } // Picture string a --(Edits ab)--> string b --(Edits bc)--> string c. // Parallel iteration over both Edits. @@ -397,7 +399,7 @@ Edits &Edits::mergeAndAppend(const Edits &ab, const Edits &bc, UErrorCode &error return *this; } -Edits::Iterator::Iterator(const uint16_t *a, int32_t len, UBool oc, UBool crs) : +Edits::Iterator::Iterator(const uint16_t* a U_LIFETIME_BOUND, int32_t len, UBool oc, UBool crs) : array(a), index(0), length(len), remaining(0), onlyChanges_(oc), coarse(crs), dir(0), changed(false), oldLength_(0), newLength_(0), @@ -776,7 +778,7 @@ int32_t Edits::Iterator::sourceIndexFromDestinationIndex(int32_t i, UErrorCode & } } -UnicodeString& Edits::Iterator::toString(UnicodeString& sb) const { +UnicodeString& Edits::Iterator::toString(UnicodeString& sb U_LIFETIME_BOUND) const { sb.append(u"{ src[", -1); ICU_Utility::appendNumber(sb, srcIndex); sb.append(u"..", -1); diff --git a/deps/icu-small/source/common/filteredbrk.cpp b/deps/icu-small/source/common/filteredbrk.cpp index 29b02dd38424..c30f4e6009ef 100644 --- a/deps/icu-small/source/common/filteredbrk.cpp +++ b/deps/icu-small/source/common/filteredbrk.cpp @@ -75,7 +75,7 @@ class UStringSet : public UVector { /** * Return the ith UnicodeString alias */ - inline const UnicodeString* getStringAt(int32_t i) const { + inline const UnicodeString* getStringAt(int32_t i) const U_LIFETIME_BOUND { return static_cast(elementAt(i)); } /** @@ -139,7 +139,7 @@ class SimpleFilteredSentenceBreakData : public UMemory { public: SimpleFilteredSentenceBreakData(UCharsTrie *forwards, UCharsTrie *backwards ) : fForwardsPartialTrie(forwards), fBackwardsTrie(backwards), refcount(1) { } - SimpleFilteredSentenceBreakData *incr() { + SimpleFilteredSentenceBreakData* incr() U_LIFETIME_BOUND { umtx_atomic_inc(&refcount); return this; } @@ -154,8 +154,10 @@ class SimpleFilteredSentenceBreakData : public UMemory { bool hasForwardsPartialTrie() const { return fForwardsPartialTrie.isValid(); } bool hasBackwardsTrie() const { return fBackwardsTrie.isValid(); } - const UCharsTrie &getForwardsPartialTrie() const { return *fForwardsPartialTrie; } - const UCharsTrie &getBackwardsTrie() const { return *fBackwardsTrie; } + const UCharsTrie& getForwardsPartialTrie() const U_LIFETIME_BOUND { + return *fForwardsPartialTrie; + } + const UCharsTrie& getBackwardsTrie() const U_LIFETIME_BOUND { return *fBackwardsTrie; } private: // These tries own their data arrays. @@ -196,13 +198,21 @@ class SimpleFilteredSentenceBreakIterator : public BreakIterator { /* -- text modifying -- */ virtual void setText(UText *text, UErrorCode &status) override { fDelegate->setText(text,status); } - virtual BreakIterator &refreshInputText(UText *input, UErrorCode &status) override { fDelegate->refreshInputText(input,status); return *this; } + virtual BreakIterator& refreshInputText(UText* input, + UErrorCode& status) U_LIFETIME_BOUND override { + fDelegate->refreshInputText(input, status); + return *this; + } virtual void adoptText(CharacterIterator* it) override { fDelegate->adoptText(it); } virtual void setText(const UnicodeString &text) override { fDelegate->setText(text); } /* -- other functions that are just delegated -- */ - virtual UText *getUText(UText *fillIn, UErrorCode &status) const override { return fDelegate->getUText(fillIn,status); } - virtual CharacterIterator& getText() const override { return fDelegate->getText(); } + virtual UText* getUText(UText* fillIn U_LIFETIME_BOUND, UErrorCode& status) const override { + return fDelegate->getUText(fillIn, status); + } + virtual CharacterIterator& getText() const U_LIFETIME_BOUND override { + return fDelegate->getText(); + } /* -- ITERATION -- */ virtual int32_t first() override; diff --git a/deps/icu-small/source/common/filterednormalizer2.cpp b/deps/icu-small/source/common/filterednormalizer2.cpp index 5eafcb6d78f6..cdda0a534d12 100644 --- a/deps/icu-small/source/common/filterednormalizer2.cpp +++ b/deps/icu-small/source/common/filterednormalizer2.cpp @@ -32,10 +32,10 @@ U_NAMESPACE_BEGIN FilteredNormalizer2::~FilteredNormalizer2() {} -UnicodeString & -FilteredNormalizer2::normalize(const UnicodeString &src, - UnicodeString &dest, - UErrorCode &errorCode) const { +UnicodeString& +FilteredNormalizer2::normalize(const UnicodeString& src, + UnicodeString& dest U_LIFETIME_BOUND, + UErrorCode& errorCode) const { uprv_checkCanGetBuffer(src, errorCode); if(U_FAILURE(errorCode)) { dest.setToBogus(); @@ -56,11 +56,11 @@ FilteredNormalizer2::normalize(const UnicodeString &src, // USET_SPAN_SIMPLE should be passed in for the start of src // and USET_SPAN_NOT_CONTAINED should be passed in if we continue after // an in-filter prefix. -UnicodeString & -FilteredNormalizer2::normalize(const UnicodeString &src, - UnicodeString &dest, +UnicodeString& +FilteredNormalizer2::normalize(const UnicodeString& src, + UnicodeString& dest U_LIFETIME_BOUND, USetSpanCondition spanCondition, - UErrorCode &errorCode) const { + UErrorCode& errorCode) const { UnicodeString tempDest; // Don't throw away destination buffer between iterations. for(int32_t prevSpanLimit=0; prevSpanLimitname; } -U_CAPI const char * U_EXPORT2 -uplug_getSymbolName(UPlugData *data) { +U_CAPI const char* U_EXPORT2 +uplug_getSymbolName(UPlugData* data U_LIFETIME_BOUND) { return data->sym; } -U_CAPI const char * U_EXPORT2 -uplug_getLibraryName(UPlugData *data, UErrorCode *status) { +U_CAPI const char* U_EXPORT2 +uplug_getLibraryName(UPlugData* data U_LIFETIME_BOUND, UErrorCode* status) { if(data->libName[0]) { return data->libName; } else { @@ -503,7 +503,7 @@ uplug_setContext(UPlugData *data, void *context) { } U_CAPI const char* U_EXPORT2 -uplug_getConfiguration(UPlugData *data) { +uplug_getConfiguration(UPlugData* data U_LIFETIME_BOUND) { return data->config; } diff --git a/deps/icu-small/source/common/localebuilder.cpp b/deps/icu-small/source/common/localebuilder.cpp index 3ba735530689..8af7bf80b028 100644 --- a/deps/icu-small/source/common/localebuilder.cpp +++ b/deps/icu-small/source/common/localebuilder.cpp @@ -51,7 +51,7 @@ LocaleBuilder::~LocaleBuilder() delete extensions_; } -LocaleBuilder& LocaleBuilder::setLocale(const Locale& locale) +LocaleBuilder& LocaleBuilder::setLocale(const Locale& locale) U_LIFETIME_BOUND { clear(); setLanguage(locale.getLanguage()); @@ -65,7 +65,7 @@ LocaleBuilder& LocaleBuilder::setLocale(const Locale& locale) return *this; } -LocaleBuilder& LocaleBuilder::setLanguageTag(StringPiece tag) +LocaleBuilder& LocaleBuilder::setLanguageTag(StringPiece tag) U_LIFETIME_BOUND { Locale l = Locale::forLanguageTag(tag, status_); if (U_FAILURE(status_)) { return *this; } @@ -92,19 +92,19 @@ void setField(StringPiece input, char* dest, UErrorCode& errorCode, } // namespace -LocaleBuilder& LocaleBuilder::setLanguage(StringPiece language) +LocaleBuilder& LocaleBuilder::setLanguage(StringPiece language) U_LIFETIME_BOUND { setField(language, language_, status_, &ultag_isLanguageSubtag); return *this; } -LocaleBuilder& LocaleBuilder::setScript(StringPiece script) +LocaleBuilder& LocaleBuilder::setScript(StringPiece script) U_LIFETIME_BOUND { setField(script, script_, status_, &ultag_isScriptSubtag); return *this; } -LocaleBuilder& LocaleBuilder::setRegion(StringPiece region) +LocaleBuilder& LocaleBuilder::setRegion(StringPiece region) U_LIFETIME_BOUND { setField(region, region_, status_, &ultag_isRegionSubtag); return *this; @@ -124,7 +124,7 @@ void transform(char* data, int32_t len) { } // namespace -LocaleBuilder& LocaleBuilder::setVariant(StringPiece variant) +LocaleBuilder& LocaleBuilder::setVariant(StringPiece variant) U_LIFETIME_BOUND { if (U_FAILURE(status_)) { return *this; } if (variant.empty()) { @@ -233,7 +233,7 @@ _setUnicodeExtensions(Locale& locale, const CharString& value, UErrorCode& error } // namespace -LocaleBuilder& LocaleBuilder::setExtension(char key, StringPiece value) +LocaleBuilder& LocaleBuilder::setExtension(char key, StringPiece value) U_LIFETIME_BOUND { if (U_FAILURE(status_)) { return *this; } if (!UPRV_ISALPHANUM(key)) { @@ -269,8 +269,8 @@ LocaleBuilder& LocaleBuilder::setExtension(char key, StringPiece value) return *this; } -LocaleBuilder& LocaleBuilder::setUnicodeLocaleKeyword( - StringPiece key, StringPiece type) +LocaleBuilder& LocaleBuilder::setUnicodeLocaleKeyword(StringPiece key, + StringPiece type) U_LIFETIME_BOUND { if (U_FAILURE(status_)) { return *this; } if (!ultag_isUnicodeLocaleKey(key.data(), key.length()) || @@ -290,8 +290,7 @@ LocaleBuilder& LocaleBuilder::setUnicodeLocaleKeyword( return *this; } -LocaleBuilder& LocaleBuilder::addUnicodeLocaleAttribute( - StringPiece value) +LocaleBuilder& LocaleBuilder::addUnicodeLocaleAttribute(StringPiece value) U_LIFETIME_BOUND { CharString value_str(value, status_); if (U_FAILURE(status_)) { return *this; } @@ -351,8 +350,7 @@ LocaleBuilder& LocaleBuilder::addUnicodeLocaleAttribute( return *this; } -LocaleBuilder& LocaleBuilder::removeUnicodeLocaleAttribute( - StringPiece value) +LocaleBuilder& LocaleBuilder::removeUnicodeLocaleAttribute(StringPiece value) U_LIFETIME_BOUND { CharString value_str(value, status_); if (U_FAILURE(status_)) { return *this; } @@ -398,7 +396,7 @@ LocaleBuilder& LocaleBuilder::removeUnicodeLocaleAttribute( return *this; } -LocaleBuilder& LocaleBuilder::clear() +LocaleBuilder& LocaleBuilder::clear() U_LIFETIME_BOUND { status_ = U_ZERO_ERROR; language_[0] = 0; @@ -410,7 +408,7 @@ LocaleBuilder& LocaleBuilder::clear() return *this; } -LocaleBuilder& LocaleBuilder::clearExtensions() +LocaleBuilder& LocaleBuilder::clearExtensions() U_LIFETIME_BOUND { delete extensions_; extensions_ = nullptr; diff --git a/deps/icu-small/source/common/localefallback_data.h b/deps/icu-small/source/common/localefallback_data.h index 338bfa3595ba..08295e5ac1e0 100644 --- a/deps/icu-small/source/common/localefallback_data.h +++ b/deps/icu-small/source/common/localefallback_data.h @@ -3,25 +3,25 @@ // // Internal static data tables used by uresbund.cpp // WARNING: This file is mechanically generated by the CLDR-to-ICU tool -// (see tools/cldr/cldr-to-icu/src/main/java/org/unicode/tool/cldrtoicu/generator/ResourcFallbackCodeGenerator.java). +// (see tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/generator/ResourceFallbackCodeGenerator.java). // DO NOT HAND EDIT!!! #ifdef INCLUDED_FROM_URESBUND_CPP -//====================================================================== +// ====================================================================== // Default script table const char scriptCodeChars[] = "Aghb\0Ahom\0Arab\0Armi\0Armn\0Avst\0Bali\0Bamu\0Batk\0Beng\0Bopo\0" "Brah\0Cakm\0Cans\0Cari\0Cham\0Cher\0Chrs\0Copt\0Cprt\0Cyrl\0Deva\0" - "Egyp\0Elym\0Ethi\0Geor\0Gong\0Gonm\0Goth\0Gran\0Grek\0Gujr\0Guru\0" - "Hang\0Hani\0Hans\0Hant\0Hebr\0Hluw\0Hmnp\0Ital\0Java\0Jpan\0Kali\0" + "Egyp\0Elym\0Ethi\0Geor\0Gonm\0Goth\0Gran\0Grek\0Gujr\0Guru\0Hang\0" + "Hani\0Hans\0Hant\0Hebr\0Hluw\0Hmnp\0Ital\0Java\0Jpan\0Jurc\0Kali\0" "Kana\0Khar\0Khmr\0Kits\0Knda\0Kore\0Lana\0Laoo\0Latf\0Latg\0Lepc\0" "Lina\0Linb\0Lisu\0Lyci\0Lydi\0Mand\0Mani\0Marc\0Medf\0Merc\0Mlym\0" "Modi\0Mong\0Mroo\0Mtei\0Mymr\0Narb\0Newa\0Nkoo\0Ogam\0Olck\0Orkh\0" "Orya\0Osge\0Ougr\0Pauc\0Phli\0Phnx\0Plrd\0Prti\0Rjng\0Rohg\0Runr\0" - "Samr\0Sarb\0Saur\0Sgnw\0Sidt\0Sinh\0Sogd\0Sora\0Soyo\0Syrc\0Tagb\0" - "Takr\0Tale\0Talu\0Taml\0Tang\0Tavt\0Telu\0Tfng\0Thaa\0Thai\0Tibt\0" - "Tnsa\0Toto\0Ugar\0Vaii\0Wcho\0Xpeo\0Xsux\0Yiii\0"; + "Samr\0Sarb\0Saur\0Seal\0Sgnw\0Sidt\0Sinh\0Sogd\0Sora\0Soyo\0Syrc\0" + "Tagb\0Takr\0Tale\0Talu\0Taml\0Tang\0Tavt\0Telu\0Tfng\0Thaa\0Thai\0" + "Tibt\0Tnsa\0Toto\0Ugar\0Vaii\0Wcho\0Xpeo\0Xsux\0Yiii\0"; const char dsLocaleIDChars[] = "aaf\0aao\0aat\0ab\0abh\0abl\0abq\0abv\0acm\0acq\0acw\0acx\0adf\0" @@ -38,81 +38,83 @@ const char dsLocaleIDChars[] = "brw\0brx\0bsh\0bsk\0bst\0btd\0btm\0btv\0bua\0bwe\0bxm\0bxu\0byh\0" "byn\0byw\0bzi\0cbn\0ccp\0cde\0cdh\0cdi\0cdj\0cdm\0cdn\0cdo\0cdz\0" "ce\0cgk\0chg\0chm\0chr\0chx\0cih\0cja\0cji\0cjm\0cjy\0ckb\0ckt\0" - "clh\0clw\0cmg\0cna\0cnp\0cog\0cop\0cpg\0cr\0crh\0crj\0crk\0crl\0" - "crm\0csh\0csp\0csw\0ctd\0ctg\0ctn\0ctt\0cty\0cu\0cuu\0cv\0czh\0" - "czk\0daq\0dar\0dcc\0ddo\0def\0deh\0der\0dgl\0dhi\0dhn\0dho\0dhw\0" - "dka\0dlg\0dmf\0dmk\0dml\0dng\0dnu\0dnv\0doi\0dox\0dre\0drq\0drs\0" - "dry\0dso\0dty\0dub\0duh\0dus\0dv\0dwk\0dwz\0dz\0dzl\0ecr\0ecy\0" - "egy\0eky\0el\0emg\0emu\0enf\0enh\0era\0esg\0esh\0ett\0eve\0evn\0" - "fa\0fay\0faz\0fia\0fmu\0fub\0gan\0gaq\0gas\0gau\0gbj\0gbk\0gbl\0" - "gbm\0gbz\0gdb\0gdo\0gdx\0gez\0ggg\0gha\0ghe\0gho\0ghr\0ght\0gig\0" - "gin\0gjk\0gju\0gld\0glh\0glk\0gml\0gmv\0gmy\0goe\0gof\0goj\0gok\0" - "gon\0got\0gra\0grc\0grr\0grt\0gru\0gu\0gvr\0gwc\0gwf\0gwt\0gyo\0" - "gzi\0ha_CM\0ha_SD\0hac\0hak\0hak_TW\0har\0haz\0hbo\0hdy\0he\0" - "hi\0hif\0hii\0hit\0hkh\0hlb\0hlu\0hmd\0hmj\0hmq\0hnd\0hne\0hnj\0" - "hnm\0hno\0hoc\0hoh\0hoj\0how\0hoy\0hpo\0hrt\0hrz\0hsn\0hss\0htx\0" - "hut\0huy\0huz\0hy\0hyw\0ii\0imy\0inh\0int\0ior\0iru\0isk\0itk\0" - "itl\0iu\0iw\0ja\0jad\0jat\0jbe\0jbn\0jct\0jda\0jdg\0jdt\0jee\0" - "jge\0ji\0jje\0jkm\0jml\0jna\0jnd\0jnl\0jns\0jog\0jpa\0jpr\0jrb\0" - "jul\0jun\0juy\0jya\0jye\0ka\0kaa\0kap\0kaw\0kbd\0kbg\0kbu\0kby\0" - "kca\0kcy\0kdq\0kdt\0ket\0kev\0kex\0key\0kfa\0kfb\0kfc\0kfd\0kfe\0" - "kfg\0kfh\0kfi\0kfk\0kfm\0kfp\0kfq\0kfr\0kfs\0kfu\0kfx\0kfy\0kgj\0" - "kgy\0khb\0khf\0khg\0khn\0kho\0kht\0khv\0khw\0kif\0kim\0kip\0kjg\0" - "kjh\0kjl\0kjo\0kjp\0kjt\0kjz\0kk\0kk_AF\0kk_CN\0kk_IR\0kk_MN\0" - "kkf\0kkh\0kkt\0kle\0klj\0klr\0km\0kmj\0kmz\0kn\0knn\0ko\0koi\0" - "kok\0kpt\0kpy\0kqd\0kqy\0kra\0krc\0krk\0krr\0kru\0krv\0ks\0ksu\0" - "ksw\0ksz\0ktb\0kte\0ktl\0ktp\0ku_AM\0ku_AZ\0ku_GE\0ku_IQ\0ku_IR\0" - "ku_LB\0ku_TM\0kuf\0kum\0kv\0kva\0kvq\0kvt\0kvx\0kvy\0kwx\0kxf\0" - "kxk\0kxm\0kxp\0ky\0ky_CN\0kyu\0kyv\0kyw\0lab\0lad\0lae\0lah\0" - "lbe\0lbf\0lbj\0lbm\0lbo\0lbr\0lcp\0lep\0lez\0lhm\0lhs\0lif\0lis\0" - "lkh\0lki\0lmh\0lmn\0lo\0loy\0lpo\0lrc\0lrk\0lrl\0lsa\0lsd\0lss\0" - "ltc\0luh\0luk\0luu\0luv\0luz\0lwl\0lwm\0lya\0lzh\0lzz_GE\0mag\0" - "mai\0mby\0mde\0mdf\0mdx\0mdy\0mey\0mfa\0mfi\0mga\0mgp\0mhj\0mid\0" - "mjl\0mjq\0mjr\0mjt\0mju\0mjv\0mjz\0mk\0mkb\0mke\0mki\0mkm\0ml\0" - "mlf\0mn\0mn_CN\0mnc\0mni\0mnj\0mns\0mnw\0mpz\0mr\0mra\0mrd\0mrj\0" - "mro\0mrr\0ms_CC\0mtm\0mtr\0mud\0muk\0mut\0muv\0muz\0mve\0mvf\0" - "mvy\0mvz\0mwr\0mwt\0mww\0my\0mym\0myv\0myz\0mzb\0mzn\0nan\0nan_MO\0" - "nan_TW\0nao\0ncd\0ncq\0ndf\0ne\0neg\0neh\0nei\0new\0ngt\0nio\0" - "nit\0niv\0nli\0nlm\0nlx\0nmm\0nnp\0nod\0noe\0nog\0noi\0non\0nos\0" - "npb\0nqo\0nrn\0nsd\0nsf\0nsk\0nst\0nsv\0nty\0ntz\0nwc\0nwx\0nyl\0" - "nyq\0nyw\0oaa\0oac\0oar\0oav\0obm\0obr\0odk\0oht\0oj\0ojs\0okm\0" - "oko\0okz\0ola\0ole\0omk\0omp\0omr\0omx\0oon\0or\0ort\0oru\0orv\0" - "os\0osa\0osc\0osi\0ota\0otb\0otk\0oty\0oui\0oyb\0pa\0pa_PK\0pal\0" - "paq\0pbt\0pcb\0pce\0pcf\0pcg\0pch\0pci\0pcj\0peg\0peo\0pgd\0pgg\0" - "pgl\0pgn\0phd\0phk\0phl\0phn\0pho\0phr\0pht\0phu\0phv\0phw\0pi_IN\0" - "pi_LK\0pi_MM\0pi_TH\0pka\0pkr\0plk\0pll\0pmh\0pnt\0pnt_RU\0prc\0" - "prd\0prt\0prx\0ps\0psh\0psi\0pst\0psu\0pum\0pwo\0pwr\0pww\0pyx\0" - "qxq\0raa\0rab\0raf\0rah\0raj\0rav\0rbb\0rdb\0rei\0rhg\0rji\0rjs\0" - "rka\0rki\0rkt\0rmi\0rmt\0rmz\0rsk\0rtw\0ru\0rue\0rut\0rwr\0ryu\0" - "sa\0sah\0sam\0sat\0saz\0sbn\0sbu\0sck\0scl\0scp\0sct\0scu\0scx\0" - "sd\0sd_IN\0sdb\0sdf\0sdg\0sdh\0sdr\0sds\0sel\0sfm\0sgh\0sgj\0" - "sgr\0sgt\0sgw\0sgy\0shd\0shi\0shm\0shn\0shu\0shv\0si\0sia\0sip\0" - "siy\0siz\0sjc\0sjd\0sjp\0sjt\0skb\0skj\0skr\0smh\0smp\0smu\0smy\0" - "soa\0sog\0soi\0sou\0spt\0spv\0sqo\0sqq\0sqt\0sr\0srb\0srh\0srx\0" - "srz\0ssh\0sss\0sts\0stu\0stu_CN\0stv\0sty\0suz\0sva\0swb\0swi\0" - "swv\0sxu\0syc\0syl\0syn\0syr\0syw\0ta\0tab\0taj\0tbk\0tcn\0tco\0" - "tcx\0tcy\0tda\0tdb\0tdd\0tdg\0tdh\0te\0tes\0tg\0tg_PK\0tge\0tgf\0" - "th\0the\0thf\0thi\0thl\0thm\0thq\0thr\0ths\0ti\0tig\0tij\0tin\0" - "tjl\0tjo\0tkb\0tks\0tkt\0tmr\0tnv\0tov\0tpu\0tra\0trg\0trm\0trw\0" - "tsd\0tsj\0tt\0tth\0tto\0tts\0ttz\0tvn\0twm\0txg\0txo\0tyr\0tyv\0" - "ude\0udg\0udi\0udm\0ug\0ug_KZ\0ug_MN\0uga\0ugh\0ugo\0uk\0uki\0" - "ulc\0unr\0unr_NP\0unx\0ur\0urk\0ush\0uum\0uz_AF\0uz_CN\0uzs\0" - "vaa\0vaf\0vah\0vai\0vas\0vav\0vay\0vgr\0vjk\0vmd\0vmh\0wal\0wbk\0" - "wbq\0wbr\0wle\0wlo\0wme\0wne\0wni\0wsg\0wsv\0wtm\0wuu\0xag\0xal\0" - "xan\0xas\0xco\0xcr\0xdq\0xhe\0xhm\0xis\0xka\0xkc\0xkf\0xkj\0xkp\0" - "xlc\0xld\0xly\0xmf\0xmn\0xmr\0xna\0xnr\0xpg\0xpi\0xpm\0xpr\0xrm\0" - "xrn\0xsa\0xsd\0xsr\0xtq\0xub\0xuj\0xve\0xvi\0xwo\0xzh\0yai\0ybh\0" - "ybi\0ydg\0yea\0yej\0yeu\0ygp\0yhd\0yi\0yig\0yih\0yiv\0ykg\0ykh\0" - "yna\0ynk\0yoi\0yoy\0yrk\0ysd\0ysn\0ysp\0ysr\0ysy\0yud\0yue\0yue_CN\0" - "yug\0yux\0ywq\0ywu\0zau\0zba\0zch\0zdj\0zeh\0zen\0zgb\0zgh\0zgm\0" - "zgn\0zh\0zh_AU\0zh_BN\0zh_GB\0zh_GF\0zh_HK\0zh_ID\0zh_MO\0zh_PA\0" - "zh_PF\0zh_PH\0zh_SR\0zh_TH\0zh_TW\0zh_US\0zh_VN\0zhd\0zko\0zkt\0" - "zkz\0zlj\0zln\0zlq\0zqe\0zrg\0zrp\0zum\0zwa\0zyg\0zyn\0zzj\0"; + "clh\0clw\0cmg\0cna\0cnp\0cnu\0cog\0cop\0cpg\0cpx\0cr\0crh\0crj\0" + "crk\0crl\0crm\0csh\0csj\0csp\0csw\0ctd\0ctg\0ctn\0ctt\0cty\0cu\0" + "cuu\0cv\0czh\0czk\0daq\0dar\0dcc\0ddo\0def\0deh\0der\0dgl\0dhi\0" + "dhn\0dho\0dhw\0dka\0dlg\0dmf\0dmk\0dml\0dng\0dnu\0dnv\0doi\0dox\0" + "dre\0drq\0drs\0dry\0dso\0dty\0dub\0duh\0dus\0dv\0dwk\0dwz\0dz\0" + "dzl\0ecr\0ecy\0egy\0eky\0el\0emg\0emu\0enf\0enh\0era\0esg\0esh\0" + "ett\0eve\0evn\0fa\0fay\0faz\0fia\0fmu\0fub\0gan\0gaq\0gas\0gau\0" + "gbj\0gbk\0gbl\0gbm\0gbz\0gdb\0gdo\0gdx\0gez\0ggg\0gha\0ghe\0gho\0" + "ghr\0ght\0gig\0gin\0gjk\0gju\0gld\0glh\0glk\0gml\0gmv\0gmy\0goe\0" + "gof\0goj\0gok\0gon\0got\0gra\0grc\0grr\0grt\0gru\0gu\0gvr\0gwc\0" + "gwf\0gwt\0gyo\0gzi\0ha_CM\0ha_SD\0hac\0hak\0hak_TW\0har\0haz\0" + "hbo\0hdy\0he\0hi\0hif\0hii\0hit\0hkh\0hlb\0hlu\0hmd\0hmj\0hmq\0" + "hnd\0hne\0hnj\0hnm\0hno\0hoc\0hoh\0hoj\0how\0hoy\0hpo\0hrt\0hrz\0" + "hsn\0hss\0htx\0hut\0huy\0huz\0hy\0hyw\0ii\0imy\0inh\0int\0ior\0" + "iru\0isk\0itk\0itl\0iu\0iw\0ja\0jad\0jat\0jbe\0jbn\0jct\0jda\0" + "jdg\0jdt\0jee\0jge\0ji\0jje\0jkp\0jml\0jna\0jnd\0jnl\0jns\0jog\0" + "jpa\0jpr\0jrb\0juc\0jul\0jun\0juy\0jya\0jye\0ka\0kaa\0kap\0kaw\0" + "kbd\0kbg\0kbu\0kby\0kca\0kcy\0kdq\0kdt\0ket\0kev\0kex\0key\0kfa\0" + "kfb\0kfc\0kfd\0kfe\0kfg\0kfh\0kfi\0kfk\0kfm\0kfp\0kfq\0kfr\0kfs\0" + "kfu\0kfx\0kfy\0kgj\0kgy\0khb\0khf\0khg\0khn\0kho\0kht\0khv\0khw\0" + "kif\0kim\0kip\0kjg\0kjh\0kjl\0kjo\0kjp\0kjt\0kjz\0kk\0kk_AF\0" + "kk_CN\0kk_IR\0kk_MN\0kkf\0kkh\0kkt\0kle\0klj\0klr\0km\0kmj\0kmz\0" + "kn\0knn\0ko\0koi\0kok\0kpt\0kpy\0kqd\0kqy\0kra\0krc\0krk\0krr\0" + "kru\0krv\0ks\0ksu\0ksw\0ksz\0ktb\0kte\0ktl\0ktp\0ku_AM\0ku_AZ\0" + "ku_GE\0ku_IQ\0ku_IR\0ku_LB\0ku_TM\0kuf\0kum\0kv\0kva\0kvq\0kvt\0" + "kvx\0kvy\0kwx\0kxf\0kxk\0kxm\0kxp\0ky\0ky_CN\0kyu\0kyv\0kyw\0" + "kzq\0lab\0lad\0lae\0lah\0lbe\0lbf\0lbj\0lbm\0lbo\0lbr\0lcp\0lep\0" + "lez\0lhm\0lhs\0lif\0lis\0lkh\0lki\0lmh\0lmn\0lo\0loy\0lpo\0lrc\0" + "lrk\0lrl\0lsa\0lsd\0lss\0ltc\0luh\0luk\0luu\0luv\0luz\0lwl\0lwm\0" + "lya\0lzh\0lzz_GE\0mag\0mai\0mby\0mde\0mdf\0mdx\0mdy\0mey\0mfa\0" + "mfi\0mga\0mgp\0mhj\0mid\0mjl\0mjq\0mjr\0mjt\0mju\0mjv\0mjz\0mk\0" + "mkb\0mke\0mki\0mkm\0ml\0mlf\0mn\0mn_CN\0mnc\0mni\0mnj\0mnp\0mns\0" + "mnw\0mpz\0mr\0mra\0mrj\0mro\0mrr\0ms_CC\0mtm\0mtr\0mud\0muk\0" + "mut\0muv\0muz\0mve\0mvf\0mvy\0mvz\0mwr\0mwt\0mww\0my\0mym\0myv\0" + "myz\0mzb\0mzn\0nan\0nan_MO\0nan_TW\0nao\0ncd\0ncq\0ndf\0ne\0neg\0" + "neh\0nei\0nev\0new\0ngt\0nio\0nit\0niv\0nli\0nll\0nlm\0nlx\0nmm\0" + "nnp\0nod\0noe\0nog\0noi\0non\0nos\0npb\0nqo\0nrn\0nsd\0nsf\0nsk\0" + "nst\0nsv\0nty\0ntz\0nwc\0nwx\0nyl\0nyq\0nyw\0oaa\0oac\0oak\0oar\0" + "oav\0obm\0obr\0och\0odk\0oht\0oj\0ojs\0okm\0oko\0okz\0ola\0ole\0" + "omk\0omp\0omr\0omx\0omy\0oon\0or\0ort\0oru\0orv\0os\0osa\0osc\0" + "osd\0osi\0ota\0otb\0otk\0oty\0oui\0oyb\0pa\0pa_PK\0pal\0paq\0" + "pbt\0pcb\0pce\0pcf\0pcg\0pch\0pci\0pcj\0peg\0peo\0pgd\0pgg\0pgl\0" + "pgn\0phd\0phk\0phl\0phn\0pho\0phr\0pht\0phu\0phv\0phw\0pi_IN\0" + "pi_LK\0pi_MM\0pi_TH\0pka\0pkr\0plk\0pll\0pmh\0pnt\0pnt_RU\0pnx\0" + "prc\0prd\0prt\0prx\0ps\0psh\0psi\0pst\0psu\0pum\0pwo\0pwr\0pww\0" + "pyx\0qxq\0raa\0rab\0raf\0rah\0raj\0rav\0rbb\0rdb\0rei\0rhg\0rji\0" + "rjs\0rka\0rki\0rkt\0rmi\0rmt\0rmz\0rsk\0rtw\0ru\0rue\0rut\0rwr\0" + "ryu\0sa\0sah\0sam\0sat\0saz\0sbn\0sbu\0sck\0scl\0scp\0sct\0scu\0" + "scx\0sd\0sd_IN\0sdb\0sdf\0sdg\0sdh\0sdr\0sds\0sel\0sfm\0sgh\0" + "sgj\0sgr\0sgt\0sgw\0sgy\0shd\0shi\0shm\0shn\0shu\0shv\0si\0sia\0" + "sip\0siy\0siz\0sjc\0sjd\0sjp\0sjt\0skb\0skj\0skr\0sle\0smh\0smp\0" + "smu\0smy\0soa\0sog\0soi\0sou\0spt\0spv\0sqo\0sqq\0sqt\0sr\0srb\0" + "srh\0srx\0srz\0ssh\0sss\0sts\0stu\0stu_CN\0stv\0sty\0suz\0sva\0" + "swb\0swi\0swv\0sxu\0syc\0syl\0syn\0syr\0syw\0ta\0tab\0taj\0tbk\0" + "tcn\0tco\0tcx\0tcy\0tda\0tdb\0tdd\0tdg\0tdh\0te\0tes\0tg\0tg_PK\0" + "tge\0tgf\0th\0the\0thf\0thi\0thl\0thm\0thq\0thr\0ths\0ti\0tig\0" + "tij\0tin\0tjl\0tjo\0tkb\0tks\0tkt\0tmr\0tnv\0tov\0tpu\0tra\0trg\0" + "trm\0trw\0tsd\0tsj\0tt\0tth\0tto\0tts\0ttz\0tvn\0twm\0txg\0txo\0" + "tyr\0tyv\0ude\0udg\0udi\0udm\0ug\0ug_KZ\0ug_MN\0uga\0ugh\0ugo\0" + "uk\0uki\0ulc\0unr\0unr_NP\0unx\0ur\0urk\0ush\0uum\0uz_AF\0uz_CN\0" + "uzs\0vaa\0vaf\0vah\0vai\0vas\0vav\0vay\0vgr\0vjk\0vmd\0vmh\0wal\0" + "wbk\0wbq\0wbr\0wle\0wly\0wme\0wne\0wni\0wsg\0wsv\0wtm\0wuu\0xag\0" + "xal\0xan\0xas\0xco\0xcr\0xdq\0xhe\0xhm\0xis\0xka\0xkc\0xkf\0xkj\0" + "xkk\0xkp\0xlc\0xld\0xly\0xmf\0xmn\0xmr\0xna\0xnr\0xpg\0xpi\0xpm\0" + "xpr\0xrm\0xrn\0xsa\0xsd\0xsr\0xtq\0xua\0xub\0xuj\0xve\0xvi\0xwo\0" + "xzh\0yai\0ybh\0ybi\0ydg\0yea\0yej\0yeu\0ygp\0yhd\0yi\0yig\0yih\0" + "yin\0yiv\0ykg\0ykh\0yna\0ynk\0yoi\0yoy\0yrk\0ysd\0ysn\0ysp\0ysr\0" + "ysy\0yud\0yue\0yue_CN\0yug\0yux\0ywq\0ywu\0zau\0zba\0zch\0zdj\0" + "zeh\0zen\0zgb\0zgh\0zgm\0zgn\0zh\0zh_AU\0zh_BN\0zh_GB\0zh_GF\0" + "zh_HK\0zh_ID\0zh_MO\0zh_PA\0zh_PF\0zh_PH\0zh_SR\0zh_TH\0zh_TW\0" + "zh_US\0zh_VN\0zhd\0zkn\0zko\0zkt\0zkz\0zlj\0zln\0zlq\0zqe\0zrg\0" + "zrp\0zum\0zwa\0zyg\0zyn\0zzj\0"; const int32_t defaultScriptTable[] = { 0, 325, // aaf -> Mlym 4, 10, // aao -> Arab - 8, 150, // aat -> Grek + 8, 145, // aat -> Grek 12, 100, // ab -> Cyrl 15, 10, // abh -> Arab 19, 425, // abl -> Rjng @@ -123,7 +125,7 @@ const int32_t defaultScriptTable[] = { 39, 10, // acw -> Arab 43, 10, // acx -> Arab 47, 10, // adf -> Arab - 51, 545, // adx -> Tibt + 51, 550, // adx -> Tibt 55, 100, // ady -> Cyrl 59, 25, // ae -> Avst 62, 10, // aeb -> Arab @@ -138,12 +140,12 @@ const int32_t defaultScriptTable[] = { 98, 5, // aho -> Ahom 102, 105, // ahr -> Deva 106, 10, // aib -> Arab - 110, 485, // aii -> Syrc - 114, 185, // aij -> Hebr + 110, 490, // aii -> Syrc + 114, 180, // aij -> Hebr 118, 220, // ain -> Kana 122, 350, // aio -> Mymr 126, 10, // aiq -> Arab - 130, 580, // akk -> Xsux + 130, 585, // akk -> Xsux 134, 100, // akv -> Cyrl 138, 255, // alk -> Laoo 142, 325, // all -> Mlym @@ -151,8 +153,8 @@ const int32_t defaultScriptTable[] = { 150, 100, // alt -> Cyrl 154, 120, // alw -> Ethi 158, 120, // am -> Ethi - 161, 210, // ams -> Jpan - 165, 485, // amw -> Syrc + 161, 205, // ams -> Jpan + 165, 490, // amw -> Syrc 169, 100, // ani -> Cyrl 173, 105, // anp -> Deva 177, 105, // anq -> Deva @@ -170,7 +172,7 @@ const int32_t defaultScriptTable[] = { 224, 10, // ary -> Arab 228, 10, // arz -> Arab 232, 45, // as -> Beng - 235, 455, // ase -> Sgnw + 235, 460, // ase -> Sgnw 239, 10, // ask -> Arab 243, 105, // asr -> Deva 247, 10, // atn -> Arab @@ -203,9 +205,9 @@ const int32_t defaultScriptTable[] = { 358, 105, // bee -> Deva 362, 10, // bej -> Arab 366, 105, // bfb -> Deva - 370, 510, // bfq -> Taml + 370, 515, // bfq -> Taml 374, 10, // bft -> Arab - 378, 545, // bfu -> Tibt + 378, 550, // bfu -> Tibt 382, 385, // bfw -> Orya 386, 105, // bfy -> Deva 390, 105, // bfz -> Deva @@ -216,7 +218,7 @@ const int32_t defaultScriptTable[] = { 409, 10, // bgp -> Arab 413, 105, // bgq -> Deva 417, 105, // bgw -> Deva - 421, 150, // bgx -> Grek + 421, 145, // bgx -> Grek 425, 105, // bha -> Deva 429, 105, // bhb -> Deva 433, 105, // bhd -> Deva @@ -225,22 +227,22 @@ const int32_t defaultScriptTable[] = { 445, 105, // bhi -> Deva 449, 105, // bhj -> Deva 453, 10, // bhm -> Arab - 457, 485, // bhn -> Syrc + 457, 490, // bhn -> Syrc 461, 105, // bho -> Deva 465, 105, // bht -> Deva 469, 105, // bhu -> Deva 473, 105, // bix -> Deva 477, 105, // biy -> Deva - 481, 485, // bjf -> Syrc + 481, 490, // bjf -> Syrc 485, 105, // bjj -> Deva 489, 10, // bjm -> Arab - 493, 545, // bkk -> Tibt + 493, 550, // bkk -> Tibt 497, 350, // blk -> Mymr - 501, 520, // blt -> Tavt + 501, 525, // blt -> Tavt 505, 105, // bmj -> Deva 509, 45, // bn -> Beng 512, 105, // bns -> Deva - 516, 545, // bo -> Tibt + 516, 550, // bo -> Tibt 519, 100, // bph -> Cyrl 523, 105, // bpx -> Deva 527, 45, // bpy -> Beng @@ -250,7 +252,7 @@ const int32_t defaultScriptTable[] = { 543, 105, // brd -> Deva 547, 10, // brh -> Arab 551, 10, // brk -> Arab - 555, 545, // bro -> Tibt + 555, 550, // bro -> Tibt 559, 255, // brv -> Laoo 563, 240, // brw -> Knda 567, 105, // brx -> Deva @@ -267,19 +269,19 @@ const int32_t defaultScriptTable[] = { 611, 105, // byh -> Deva 615, 120, // byn -> Ethi 619, 105, // byw -> Deva - 623, 540, // bzi -> Thai - 627, 540, // cbn -> Thai + 623, 545, // bzi -> Thai + 627, 545, // cbn -> Thai 631, 60, // ccp -> Cakm - 635, 525, // cde -> Telu + 635, 530, // cde -> Telu 639, 105, // cdh -> Deva - 643, 155, // cdi -> Gujr + 643, 150, // cdi -> Gujr 647, 105, // cdj -> Deva 651, 105, // cdm -> Deva 655, 105, // cdn -> Deva - 659, 175, // cdo -> Hans + 659, 170, // cdo -> Hans 663, 45, // cdz -> Beng 667, 100, // ce -> Cyrl - 670, 545, // cgk -> Tibt + 670, 550, // cgk -> Tibt 674, 10, // chg -> Arab 678, 100, // chm -> Cyrl 682, 80, // chr -> Cher @@ -288,897 +290,914 @@ const int32_t defaultScriptTable[] = { 694, 10, // cja -> Arab 698, 100, // cji -> Cyrl 702, 75, // cjm -> Cham - 706, 175, // cjy -> Hans + 706, 170, // cjy -> Hans 710, 10, // ckb -> Arab 714, 100, // ckt -> Cyrl 718, 10, // clh -> Arab 722, 100, // clw -> Cyrl - 726, 480, // cmg -> Soyo - 730, 545, // cna -> Tibt - 734, 175, // cnp -> Hans - 738, 540, // cog -> Thai - 742, 90, // cop -> Copt - 746, 150, // cpg -> Grek - 750, 65, // cr -> Cans - 753, 100, // crh -> Cyrl - 757, 65, // crj -> Cans - 761, 65, // crk -> Cans - 765, 65, // crl -> Cans - 769, 65, // crm -> Cans - 773, 350, // csh -> Mymr - 777, 175, // csp -> Hans - 781, 65, // csw -> Cans - 785, 400, // ctd -> Pauc - 789, 45, // ctg -> Beng - 793, 105, // ctn -> Deva - 797, 510, // ctt -> Taml - 801, 510, // cty -> Taml - 805, 100, // cu -> Cyrl - 808, 250, // cuu -> Lana - 812, 100, // cv -> Cyrl - 815, 175, // czh -> Hans - 819, 185, // czk -> Hebr - 823, 105, // daq -> Deva - 827, 100, // dar -> Cyrl - 831, 10, // dcc -> Arab - 835, 100, // ddo -> Cyrl - 839, 10, // def -> Arab - 843, 10, // deh -> Arab - 847, 45, // der -> Beng - 851, 10, // dgl -> Arab - 855, 105, // dhi -> Deva - 859, 155, // dhn -> Gujr - 863, 155, // dho -> Gujr - 867, 105, // dhw -> Deva - 871, 545, // dka -> Tibt - 875, 100, // dlg -> Cyrl - 879, 315, // dmf -> Medf - 883, 10, // dmk -> Arab - 887, 10, // dml -> Arab - 891, 100, // dng -> Cyrl - 895, 350, // dnu -> Mymr - 899, 350, // dnv -> Mymr - 903, 105, // doi -> Deva - 907, 120, // dox -> Ethi - 911, 545, // dre -> Tibt - 915, 105, // drq -> Deva - 919, 120, // drs -> Ethi - 923, 105, // dry -> Deva - 927, 385, // dso -> Orya - 931, 105, // dty -> Deva - 935, 155, // dub -> Gujr - 939, 105, // duh -> Deva - 943, 105, // dus -> Deva - 947, 535, // dv -> Thaa - 950, 385, // dwk -> Orya - 954, 105, // dwz -> Deva - 958, 545, // dz -> Tibt - 961, 545, // dzl -> Tibt - 965, 150, // ecr -> Grek - 969, 95, // ecy -> Cprt - 973, 110, // egy -> Egyp - 977, 215, // eky -> Kali - 981, 150, // el -> Grek - 984, 105, // emg -> Deva - 988, 105, // emu -> Deva - 992, 100, // enf -> Cyrl - 996, 100, // enh -> Cyrl - 1000, 510, // era -> Taml - 1004, 135, // esg -> Gonm - 1008, 10, // esh -> Arab - 1012, 200, // ett -> Ital - 1016, 100, // eve -> Cyrl - 1020, 100, // evn -> Cyrl - 1024, 10, // fa -> Arab - 1027, 10, // fay -> Arab - 1031, 10, // faz -> Arab - 1035, 10, // fia -> Arab - 1039, 105, // fmu -> Deva - 1043, 10, // fub -> Arab - 1047, 175, // gan -> Hans - 1051, 385, // gaq -> Orya - 1055, 155, // gas -> Gujr - 1059, 525, // gau -> Telu - 1063, 385, // gbj -> Orya - 1067, 105, // gbk -> Deva - 1071, 155, // gbl -> Gujr - 1075, 105, // gbm -> Deva - 1079, 10, // gbz -> Arab - 1083, 385, // gdb -> Orya - 1087, 100, // gdo -> Cyrl - 1091, 105, // gdx -> Deva - 1095, 120, // gez -> Ethi - 1099, 10, // ggg -> Arab - 1103, 10, // gha -> Arab - 1107, 105, // ghe -> Deva - 1111, 530, // gho -> Tfng - 1115, 10, // ghr -> Arab - 1119, 545, // ght -> Tibt - 1123, 10, // gig -> Arab - 1127, 100, // gin -> Cyrl - 1131, 10, // gjk -> Arab - 1135, 10, // gju -> Arab - 1139, 100, // gld -> Cyrl - 1143, 10, // glh -> Arab - 1147, 10, // glk -> Arab - 1151, 260, // gml -> Latf - 1155, 120, // gmv -> Ethi - 1159, 280, // gmy -> Linb - 1163, 545, // goe -> Tibt - 1167, 120, // gof -> Ethi - 1171, 105, // goj -> Deva - 1175, 105, // gok -> Deva - 1179, 105, // gon -> Deva - 1183, 140, // got -> Goth - 1187, 105, // gra -> Deva - 1191, 150, // grc -> Grek - 1195, 10, // grr -> Arab - 1199, 45, // grt -> Beng - 1203, 120, // gru -> Ethi - 1207, 155, // gu -> Gujr - 1210, 105, // gvr -> Deva - 1214, 10, // gwc -> Arab - 1218, 10, // gwf -> Arab - 1222, 10, // gwt -> Arab - 1226, 105, // gyo -> Deva - 1230, 10, // gzi -> Arab - 1234, 10, // ha_CM -> Arab - 1240, 10, // ha_SD -> Arab - 1246, 10, // hac -> Arab - 1250, 175, // hak -> Hans - 1254, 180, // hak_TW -> Hant - 1261, 120, // har -> Ethi - 1265, 10, // haz -> Arab - 1269, 185, // hbo -> Hebr - 1273, 120, // hdy -> Ethi - 1277, 185, // he -> Hebr - 1280, 105, // hi -> Deva - 1283, 105, // hif -> Deva - 1287, 495, // hii -> Takr - 1291, 580, // hit -> Xsux - 1295, 10, // hkh -> Arab - 1299, 105, // hlb -> Deva - 1303, 190, // hlu -> Hluw - 1307, 415, // hmd -> Plrd - 1311, 50, // hmj -> Bopo - 1315, 50, // hmq -> Bopo - 1319, 10, // hnd -> Arab - 1323, 105, // hne -> Deva - 1327, 195, // hnj -> Hmnp - 1331, 175, // hnm -> Hans - 1335, 10, // hno -> Arab - 1339, 105, // hoc -> Deva - 1343, 10, // hoh -> Arab - 1347, 105, // hoj -> Deva - 1351, 170, // how -> Hani - 1355, 105, // hoy -> Deva - 1359, 350, // hpo -> Mymr - 1363, 485, // hrt -> Syrc - 1367, 10, // hrz -> Arab - 1371, 175, // hsn -> Hans - 1375, 10, // hss -> Arab - 1379, 580, // htx -> Xsux - 1383, 105, // hut -> Deva - 1387, 185, // huy -> Hebr - 1391, 100, // huz -> Cyrl - 1395, 20, // hy -> Armn - 1398, 20, // hyw -> Armn - 1402, 585, // ii -> Yiii - 1405, 290, // imy -> Lyci - 1409, 100, // inh -> Cyrl - 1413, 350, // int -> Mymr - 1417, 120, // ior -> Ethi - 1421, 510, // iru -> Taml - 1425, 10, // isk -> Arab - 1429, 185, // itk -> Hebr - 1433, 100, // itl -> Cyrl - 1437, 65, // iu -> Cans - 1440, 185, // iw -> Hebr - 1443, 210, // ja -> Jpan - 1446, 10, // jad -> Arab - 1450, 10, // jat -> Arab - 1454, 185, // jbe -> Hebr - 1458, 10, // jbn -> Arab - 1462, 100, // jct -> Cyrl - 1466, 545, // jda -> Tibt - 1470, 10, // jdg -> Arab - 1474, 100, // jdt -> Cyrl - 1478, 105, // jee -> Deva - 1482, 125, // jge -> Geor - 1486, 185, // ji -> Hebr - 1489, 165, // jje -> Hang - 1493, 350, // jkm -> Mymr - 1497, 105, // jml -> Deva - 1501, 495, // jna -> Takr - 1505, 10, // jnd -> Arab - 1509, 105, // jnl -> Deva - 1513, 105, // jns -> Deva - 1517, 10, // jog -> Arab - 1521, 185, // jpa -> Hebr - 1525, 185, // jpr -> Hebr - 1529, 185, // jrb -> Hebr - 1533, 105, // jul -> Deva - 1537, 385, // jun -> Orya - 1541, 385, // juy -> Orya - 1545, 545, // jya -> Tibt - 1549, 185, // jye -> Hebr - 1553, 125, // ka -> Geor - 1556, 100, // kaa -> Cyrl - 1560, 100, // kap -> Cyrl - 1564, 30, // kaw -> Bali - 1568, 100, // kbd -> Cyrl - 1572, 545, // kbg -> Tibt - 1576, 10, // kbu -> Arab - 1580, 10, // kby -> Arab - 1584, 100, // kca -> Cyrl - 1588, 10, // kcy -> Arab - 1592, 45, // kdq -> Beng - 1596, 540, // kdt -> Thai - 1600, 100, // ket -> Cyrl - 1604, 325, // kev -> Mlym - 1608, 105, // kex -> Deva - 1612, 525, // key -> Telu - 1616, 240, // kfa -> Knda - 1620, 105, // kfb -> Deva - 1624, 525, // kfc -> Telu - 1628, 240, // kfd -> Knda - 1632, 510, // kfe -> Taml - 1636, 240, // kfg -> Knda - 1640, 325, // kfh -> Mlym - 1644, 510, // kfi -> Taml - 1648, 105, // kfk -> Deva - 1652, 10, // kfm -> Arab - 1656, 105, // kfp -> Deva - 1660, 105, // kfq -> Deva - 1664, 105, // kfr -> Deva - 1668, 105, // kfs -> Deva - 1672, 105, // kfu -> Deva - 1676, 105, // kfx -> Deva - 1680, 105, // kfy -> Deva - 1684, 105, // kgj -> Deva - 1688, 545, // kgy -> Tibt - 1692, 505, // khb -> Talu - 1696, 540, // khf -> Thai - 1700, 545, // khg -> Tibt - 1704, 105, // khn -> Deva - 1708, 55, // kho -> Brah - 1712, 350, // kht -> Mymr - 1716, 100, // khv -> Cyrl - 1720, 10, // khw -> Arab - 1724, 105, // kif -> Deva - 1728, 100, // kim -> Cyrl - 1732, 105, // kip -> Deva - 1736, 255, // kjg -> Laoo - 1740, 100, // kjh -> Cyrl - 1744, 105, // kjl -> Deva - 1748, 105, // kjo -> Deva - 1752, 350, // kjp -> Mymr - 1756, 540, // kjt -> Thai - 1760, 545, // kjz -> Tibt - 1764, 100, // kk -> Cyrl - 1767, 10, // kk_AF -> Arab - 1773, 10, // kk_CN -> Arab - 1779, 10, // kk_IR -> Arab - 1785, 10, // kk_MN -> Arab - 1791, 545, // kkf -> Tibt - 1795, 250, // kkh -> Lana - 1799, 105, // kkt -> Deva - 1803, 105, // kle -> Deva - 1807, 10, // klj -> Arab - 1811, 105, // klr -> Deva - 1815, 230, // km -> Khmr - 1818, 105, // kmj -> Deva - 1822, 10, // kmz -> Arab - 1826, 240, // kn -> Knda - 1829, 105, // knn -> Deva - 1833, 245, // ko -> Kore - 1836, 100, // koi -> Cyrl - 1840, 105, // kok -> Deva - 1844, 100, // kpt -> Cyrl - 1848, 100, // kpy -> Cyrl - 1852, 485, // kqd -> Syrc - 1856, 120, // kqy -> Ethi - 1860, 105, // kra -> Deva - 1864, 100, // krc -> Cyrl - 1868, 100, // krk -> Cyrl - 1872, 230, // krr -> Khmr - 1876, 105, // kru -> Deva - 1880, 230, // krv -> Khmr - 1884, 10, // ks -> Arab - 1887, 350, // ksu -> Mymr - 1891, 350, // ksw -> Mymr - 1895, 105, // ksz -> Deva - 1899, 120, // ktb -> Ethi - 1903, 105, // kte -> Deva - 1907, 10, // ktl -> Arab - 1911, 415, // ktp -> Plrd - 1915, 100, // ku_AM -> Cyrl - 1921, 100, // ku_AZ -> Cyrl - 1927, 100, // ku_GE -> Cyrl - 1933, 10, // ku_IQ -> Arab - 1939, 10, // ku_IR -> Arab - 1945, 10, // ku_LB -> Arab - 1951, 100, // ku_TM -> Cyrl - 1957, 255, // kuf -> Laoo - 1961, 100, // kum -> Cyrl - 1965, 100, // kv -> Cyrl - 1968, 100, // kva -> Cyrl - 1972, 350, // kvq -> Mymr - 1976, 350, // kvt -> Mymr - 1980, 10, // kvx -> Arab - 1984, 215, // kvy -> Kali - 1988, 105, // kwx -> Deva - 1992, 350, // kxf -> Mymr - 1996, 350, // kxk -> Mymr - 2000, 540, // kxm -> Thai - 2004, 10, // kxp -> Arab - 2008, 100, // ky -> Cyrl - 2011, 10, // ky_CN -> Arab - 2017, 215, // kyu -> Kali - 2021, 105, // kyv -> Deva - 2025, 105, // kyw -> Deva - 2029, 275, // lab -> Lina - 2033, 185, // lad -> Hebr - 2037, 105, // lae -> Deva - 2041, 10, // lah -> Arab - 2045, 100, // lbe -> Cyrl - 2049, 105, // lbf -> Deva - 2053, 545, // lbj -> Tibt - 2057, 105, // lbm -> Deva - 2061, 255, // lbo -> Laoo - 2065, 105, // lbr -> Deva - 2069, 540, // lcp -> Thai - 2073, 270, // lep -> Lepc - 2077, 100, // lez -> Cyrl - 2081, 105, // lhm -> Deva - 2085, 485, // lhs -> Syrc - 2089, 105, // lif -> Deva - 2093, 285, // lis -> Lisu - 2097, 545, // lkh -> Tibt - 2101, 10, // lki -> Arab - 2105, 105, // lmh -> Deva - 2109, 525, // lmn -> Telu - 2113, 255, // lo -> Laoo - 2116, 105, // loy -> Deva - 2120, 415, // lpo -> Plrd - 2124, 10, // lrc -> Arab - 2128, 10, // lrk -> Arab - 2132, 10, // lrl -> Arab - 2136, 10, // lsa -> Arab - 2140, 185, // lsd -> Hebr - 2144, 10, // lss -> Arab - 2148, 180, // ltc -> Hant - 2152, 175, // luh -> Hans - 2156, 545, // luk -> Tibt - 2160, 105, // luu -> Deva - 2164, 10, // luv -> Arab - 2168, 10, // luz -> Arab - 2172, 540, // lwl -> Thai - 2176, 540, // lwm -> Thai - 2180, 545, // lya -> Tibt - 2184, 180, // lzh -> Hant - 2188, 125, // lzz_GE -> Geor - 2195, 105, // mag -> Deva - 2199, 105, // mai -> Deva - 2203, 10, // mby -> Arab - 2207, 10, // mde -> Arab - 2211, 100, // mdf -> Cyrl - 2215, 120, // mdx -> Ethi - 2219, 120, // mdy -> Ethi - 2223, 10, // mey -> Arab - 2227, 10, // mfa -> Arab - 2231, 10, // mfi -> Arab - 2235, 265, // mga -> Latg - 2239, 105, // mgp -> Deva - 2243, 10, // mhj -> Arab - 2247, 300, // mid -> Mand - 2251, 105, // mjl -> Deva - 2255, 325, // mjq -> Mlym - 2259, 325, // mjr -> Mlym - 2263, 105, // mjt -> Deva - 2267, 525, // mju -> Telu - 2271, 325, // mjv -> Mlym - 2275, 105, // mjz -> Deva - 2279, 100, // mk -> Cyrl - 2282, 105, // mkb -> Deva - 2286, 105, // mke -> Deva - 2290, 10, // mki -> Arab - 2294, 540, // mkm -> Thai - 2298, 325, // ml -> Mlym - 2301, 540, // mlf -> Thai - 2305, 100, // mn -> Cyrl - 2308, 335, // mn_CN -> Mong - 2314, 335, // mnc -> Mong - 2318, 45, // mni -> Beng - 2322, 10, // mnj -> Arab - 2326, 100, // mns -> Cyrl - 2330, 350, // mnw -> Mymr - 2334, 540, // mpz -> Thai - 2338, 105, // mr -> Deva - 2341, 540, // mra -> Thai - 2345, 105, // mrd -> Deva - 2349, 100, // mrj -> Cyrl - 2353, 340, // mro -> Mroo - 2357, 105, // mrr -> Deva - 2361, 10, // ms_CC -> Arab - 2367, 100, // mtm -> Cyrl - 2371, 105, // mtr -> Deva - 2375, 100, // mud -> Cyrl - 2379, 545, // muk -> Tibt - 2383, 105, // mut -> Deva - 2387, 510, // muv -> Taml - 2391, 120, // muz -> Ethi - 2395, 10, // mve -> Arab - 2399, 335, // mvf -> Mong - 2403, 10, // mvy -> Arab - 2407, 120, // mvz -> Ethi - 2411, 105, // mwr -> Deva - 2415, 350, // mwt -> Mymr - 2419, 195, // mww -> Hmnp - 2423, 350, // my -> Mymr - 2426, 120, // mym -> Ethi - 2430, 100, // myv -> Cyrl - 2434, 300, // myz -> Mand - 2438, 10, // mzb -> Arab - 2442, 10, // mzn -> Arab - 2446, 175, // nan -> Hans - 2450, 180, // nan_MO -> Hant - 2457, 180, // nan_TW -> Hant - 2464, 105, // nao -> Deva - 2468, 105, // ncd -> Deva - 2472, 255, // ncq -> Laoo - 2476, 100, // ndf -> Cyrl - 2480, 105, // ne -> Deva - 2483, 100, // neg -> Cyrl - 2487, 545, // neh -> Tibt - 2491, 580, // nei -> Xsux - 2495, 105, // new -> Deva - 2499, 255, // ngt -> Laoo - 2503, 100, // nio -> Cyrl - 2507, 525, // nit -> Telu - 2511, 100, // niv -> Cyrl - 2515, 10, // nli -> Arab - 2519, 10, // nlm -> Arab - 2523, 105, // nlx -> Deva - 2527, 105, // nmm -> Deva - 2531, 570, // nnp -> Wcho - 2535, 250, // nod -> Lana - 2539, 105, // noe -> Deva - 2543, 100, // nog -> Cyrl - 2547, 105, // noi -> Deva - 2551, 435, // non -> Runr - 2555, 585, // nos -> Yiii - 2559, 545, // npb -> Tibt - 2563, 365, // nqo -> Nkoo - 2567, 435, // nrn -> Runr - 2571, 585, // nsd -> Yiii - 2575, 585, // nsf -> Yiii - 2579, 65, // nsk -> Cans - 2583, 550, // nst -> Tnsa - 2587, 585, // nsv -> Yiii - 2591, 585, // nty -> Yiii - 2595, 10, // ntz -> Arab - 2599, 360, // nwc -> Newa - 2603, 105, // nwx -> Deva - 2607, 540, // nyl -> Thai - 2611, 10, // nyq -> Arab - 2615, 540, // nyw -> Thai - 2619, 100, // oaa -> Cyrl - 2623, 100, // oac -> Cyrl - 2627, 485, // oar -> Syrc - 2631, 125, // oav -> Geor - 2635, 410, // obm -> Phnx - 2639, 350, // obr -> Mymr - 2643, 10, // odk -> Arab - 2647, 580, // oht -> Xsux - 2651, 65, // oj -> Cans - 2654, 65, // ojs -> Cans - 2658, 165, // okm -> Hang - 2662, 170, // oko -> Hani - 2666, 230, // okz -> Khmr - 2670, 105, // ola -> Deva - 2674, 545, // ole -> Tibt - 2678, 100, // omk -> Cyrl - 2682, 345, // omp -> Mtei - 2686, 330, // omr -> Modi - 2690, 350, // omx -> Mymr - 2694, 105, // oon -> Deva - 2698, 385, // or -> Orya - 2701, 525, // ort -> Telu - 2705, 10, // oru -> Arab - 2709, 100, // orv -> Cyrl - 2713, 100, // os -> Cyrl - 2716, 390, // osa -> Osge - 2720, 200, // osc -> Ital - 2724, 205, // osi -> Java - 2728, 10, // ota -> Arab - 2732, 545, // otb -> Tibt - 2736, 380, // otk -> Orkh - 2740, 145, // oty -> Gran - 2744, 395, // oui -> Ougr - 2748, 255, // oyb -> Laoo - 2752, 160, // pa -> Guru - 2755, 10, // pa_PK -> Arab - 2761, 405, // pal -> Phli - 2765, 100, // paq -> Cyrl - 2769, 10, // pbt -> Arab - 2773, 230, // pcb -> Khmr - 2777, 350, // pce -> Mymr - 2781, 325, // pcf -> Mlym - 2785, 325, // pcg -> Mlym - 2789, 105, // pch -> Deva - 2793, 105, // pci -> Deva - 2797, 525, // pcj -> Telu - 2801, 385, // peg -> Orya - 2805, 575, // peo -> Xpeo - 2809, 225, // pgd -> Khar - 2813, 105, // pgg -> Deva - 2817, 370, // pgl -> Ogam - 2821, 200, // pgn -> Ital - 2825, 105, // phd -> Deva - 2829, 350, // phk -> Mymr - 2833, 10, // phl -> Arab - 2837, 410, // phn -> Phnx - 2841, 255, // pho -> Laoo - 2845, 10, // phr -> Arab - 2849, 540, // pht -> Thai - 2853, 540, // phu -> Thai - 2857, 10, // phv -> Arab - 2861, 105, // phw -> Deva - 2865, 105, // pi_IN -> Deva - 2871, 465, // pi_LK -> Sinh - 2877, 350, // pi_MM -> Mymr - 2883, 540, // pi_TH -> Thai - 2889, 55, // pka -> Brah - 2893, 325, // pkr -> Mlym - 2897, 10, // plk -> Arab - 2901, 350, // pll -> Mymr - 2905, 55, // pmh -> Brah - 2909, 150, // pnt -> Grek - 2913, 100, // pnt_RU -> Cyrl - 2920, 10, // prc -> Arab - 2924, 10, // prd -> Arab - 2928, 540, // prt -> Thai - 2932, 10, // prx -> Arab - 2936, 10, // ps -> Arab - 2939, 10, // psh -> Arab - 2943, 10, // psi -> Arab - 2947, 10, // pst -> Arab - 2951, 55, // psu -> Brah - 2955, 105, // pum -> Deva - 2959, 350, // pwo -> Mymr - 2963, 105, // pwr -> Deva - 2967, 540, // pww -> Thai - 2971, 350, // pyx -> Mymr - 2975, 10, // qxq -> Arab - 2979, 105, // raa -> Deva - 2983, 105, // rab -> Deva - 2987, 105, // raf -> Deva - 2991, 45, // rah -> Beng - 2995, 105, // raj -> Deva - 2999, 105, // rav -> Deva - 3003, 350, // rbb -> Mymr - 3007, 10, // rdb -> Arab - 3011, 385, // rei -> Orya - 3015, 430, // rhg -> Rohg - 3019, 105, // rji -> Deva - 3023, 105, // rjs -> Deva - 3027, 230, // rka -> Khmr - 3031, 350, // rki -> Mymr - 3035, 45, // rkt -> Beng - 3039, 20, // rmi -> Armn - 3043, 10, // rmt -> Arab - 3047, 350, // rmz -> Mymr - 3051, 100, // rsk -> Cyrl - 3055, 105, // rtw -> Deva - 3059, 100, // ru -> Cyrl - 3062, 100, // rue -> Cyrl - 3066, 100, // rut -> Cyrl - 3070, 105, // rwr -> Deva - 3074, 220, // ryu -> Kana - 3078, 105, // sa -> Deva - 3081, 100, // sah -> Cyrl - 3085, 440, // sam -> Samr - 3089, 375, // sat -> Olck - 3093, 450, // saz -> Saur - 3097, 10, // sbn -> Arab - 3101, 545, // sbu -> Tibt - 3105, 105, // sck -> Deva - 3109, 10, // scl -> Arab - 3113, 105, // scp -> Deva - 3117, 255, // sct -> Laoo - 3121, 495, // scu -> Takr - 3125, 150, // scx -> Grek - 3129, 10, // sd -> Arab - 3132, 105, // sd_IN -> Deva - 3138, 10, // sdb -> Arab - 3142, 10, // sdf -> Arab - 3146, 10, // sdg -> Arab - 3150, 10, // sdh -> Arab - 3154, 45, // sdr -> Beng - 3158, 10, // sds -> Arab - 3162, 100, // sel -> Cyrl - 3166, 415, // sfm -> Plrd - 3170, 100, // sgh -> Cyrl - 3174, 105, // sgj -> Deva - 3178, 10, // sgr -> Arab - 3182, 545, // sgt -> Tibt - 3186, 120, // sgw -> Ethi - 3190, 10, // sgy -> Arab - 3194, 10, // shd -> Arab - 3198, 530, // shi -> Tfng - 3202, 10, // shm -> Arab - 3206, 350, // shn -> Mymr - 3210, 10, // shu -> Arab - 3214, 10, // shv -> Arab - 3218, 465, // si -> Sinh - 3221, 100, // sia -> Cyrl - 3225, 545, // sip -> Tibt - 3229, 10, // siy -> Arab - 3233, 10, // siz -> Arab - 3237, 175, // sjc -> Hans - 3241, 100, // sjd -> Cyrl - 3245, 105, // sjp -> Deva - 3249, 100, // sjt -> Cyrl - 3253, 540, // skb -> Thai - 3257, 105, // skj -> Deva - 3261, 10, // skr -> Arab - 3265, 585, // smh -> Yiii - 3269, 440, // smp -> Samr - 3273, 230, // smu -> Khmr - 3277, 10, // smy -> Arab - 3281, 520, // soa -> Tavt - 3285, 470, // sog -> Sogd - 3289, 105, // soi -> Deva - 3293, 540, // sou -> Thai - 3297, 545, // spt -> Tibt - 3301, 385, // spv -> Orya - 3305, 10, // sqo -> Arab - 3309, 255, // sqq -> Laoo - 3313, 10, // sqt -> Arab - 3317, 100, // sr -> Cyrl - 3320, 475, // srb -> Sora - 3324, 10, // srh -> Arab - 3328, 105, // srx -> Deva - 3332, 10, // srz -> Arab - 3336, 10, // ssh -> Arab - 3340, 255, // sss -> Laoo - 3344, 10, // sts -> Arab - 3348, 250, // stu -> Lana - 3352, 500, // stu_CN -> Tale - 3359, 120, // stv -> Ethi - 3363, 100, // sty -> Cyrl - 3367, 105, // suz -> Deva - 3371, 125, // sva -> Geor - 3375, 10, // swb -> Arab - 3379, 170, // swi -> Hani - 3383, 105, // swv -> Deva - 3387, 435, // sxu -> Runr - 3391, 485, // syc -> Syrc - 3395, 45, // syl -> Beng - 3399, 485, // syn -> Syrc - 3403, 485, // syr -> Syrc - 3407, 105, // syw -> Deva - 3411, 510, // ta -> Taml - 3414, 100, // tab -> Cyrl - 3418, 105, // taj -> Deva - 3422, 490, // tbk -> Tagb - 3426, 105, // tcn -> Deva - 3430, 350, // tco -> Mymr - 3434, 510, // tcx -> Taml - 3438, 240, // tcy -> Knda - 3442, 530, // tda -> Tfng - 3446, 105, // tdb -> Deva - 3450, 500, // tdd -> Tale - 3454, 105, // tdg -> Deva - 3458, 105, // tdh -> Deva - 3462, 525, // te -> Telu - 3465, 205, // tes -> Java - 3469, 100, // tg -> Cyrl - 3472, 10, // tg_PK -> Arab - 3478, 105, // tge -> Deva - 3482, 545, // tgf -> Tibt - 3486, 540, // th -> Thai - 3489, 105, // the -> Deva - 3493, 105, // thf -> Deva - 3497, 500, // thi -> Tale - 3501, 105, // thl -> Deva - 3505, 540, // thm -> Thai - 3509, 105, // thq -> Deva - 3513, 105, // thr -> Deva - 3517, 105, // ths -> Deva - 3521, 120, // ti -> Ethi - 3524, 120, // tig -> Ethi - 3528, 105, // tij -> Deva - 3532, 100, // tin -> Cyrl - 3536, 350, // tjl -> Mymr - 3540, 10, // tjo -> Arab - 3544, 105, // tkb -> Deva - 3548, 10, // tks -> Arab - 3552, 105, // tkt -> Deva - 3556, 485, // tmr -> Syrc - 3560, 60, // tnv -> Cakm - 3564, 10, // tov -> Arab - 3568, 230, // tpu -> Khmr - 3572, 10, // tra -> Arab - 3576, 185, // trg -> Hebr - 3580, 10, // trm -> Arab - 3584, 10, // trw -> Arab - 3588, 150, // tsd -> Grek - 3592, 545, // tsj -> Tibt - 3596, 100, // tt -> Cyrl - 3599, 255, // tth -> Laoo - 3603, 255, // tto -> Laoo - 3607, 540, // tts -> Thai - 3611, 105, // ttz -> Deva - 3615, 350, // tvn -> Mymr - 3619, 545, // twm -> Tibt - 3623, 515, // txg -> Tang - 3627, 555, // txo -> Toto - 3631, 520, // tyr -> Tavt - 3635, 100, // tyv -> Cyrl - 3639, 100, // ude -> Cyrl - 3643, 325, // udg -> Mlym - 3647, 100, // udi -> Cyrl - 3651, 100, // udm -> Cyrl - 3655, 10, // ug -> Arab - 3658, 100, // ug_KZ -> Cyrl - 3664, 100, // ug_MN -> Cyrl - 3670, 560, // uga -> Ugar - 3674, 100, // ugh -> Cyrl - 3678, 540, // ugo -> Thai - 3682, 100, // uk -> Cyrl - 3685, 385, // uki -> Orya - 3689, 100, // ulc -> Cyrl - 3693, 45, // unr -> Beng - 3697, 105, // unr_NP -> Deva - 3704, 45, // unx -> Beng - 3708, 10, // ur -> Arab - 3711, 540, // urk -> Thai - 3715, 10, // ush -> Arab - 3719, 150, // uum -> Grek - 3723, 10, // uz_AF -> Arab - 3729, 100, // uz_CN -> Cyrl - 3735, 10, // uzs -> Arab - 3739, 510, // vaa -> Taml - 3743, 10, // vaf -> Arab - 3747, 105, // vah -> Deva - 3751, 565, // vai -> Vaii - 3755, 105, // vas -> Deva - 3759, 105, // vav -> Deva - 3763, 105, // vay -> Deva - 3767, 10, // vgr -> Arab - 3771, 105, // vjk -> Deva - 3775, 240, // vmd -> Knda - 3779, 10, // vmh -> Arab - 3783, 120, // wal -> Ethi - 3787, 10, // wbk -> Arab - 3791, 525, // wbq -> Telu - 3795, 105, // wbr -> Deva - 3799, 120, // wle -> Ethi - 3803, 10, // wlo -> Arab - 3807, 105, // wme -> Deva - 3811, 10, // wne -> Arab - 3815, 10, // wni -> Arab - 3819, 130, // wsg -> Gong - 3823, 10, // wsv -> Arab - 3827, 105, // wtm -> Deva - 3831, 175, // wuu -> Hans - 3835, 0, // xag -> Aghb - 3839, 100, // xal -> Cyrl - 3843, 120, // xan -> Ethi - 3847, 100, // xas -> Cyrl - 3851, 85, // xco -> Chrs - 3855, 70, // xcr -> Cari - 3859, 100, // xdq -> Cyrl - 3863, 10, // xhe -> Arab - 3867, 230, // xhm -> Khmr - 3871, 385, // xis -> Orya - 3875, 10, // xka -> Arab - 3879, 10, // xkc -> Arab - 3883, 545, // xkf -> Tibt - 3887, 10, // xkj -> Arab - 3891, 10, // xkp -> Arab - 3895, 290, // xlc -> Lyci - 3899, 295, // xld -> Lydi - 3903, 115, // xly -> Elym - 3907, 125, // xmf -> Geor - 3911, 305, // xmn -> Mani - 3915, 320, // xmr -> Merc - 3919, 355, // xna -> Narb - 3923, 105, // xnr -> Deva - 3927, 150, // xpg -> Grek - 3931, 370, // xpi -> Ogam - 3935, 100, // xpm -> Cyrl - 3939, 420, // xpr -> Prti - 3943, 100, // xrm -> Cyrl - 3947, 100, // xrn -> Cyrl - 3951, 445, // xsa -> Sarb - 3955, 460, // xsd -> Sidt - 3959, 105, // xsr -> Deva - 3963, 55, // xtq -> Brah - 3967, 510, // xub -> Taml - 3971, 510, // xuj -> Taml - 3975, 200, // xve -> Ital - 3979, 10, // xvi -> Arab - 3983, 100, // xwo -> Cyrl - 3987, 310, // xzh -> Marc - 3991, 100, // yai -> Cyrl - 3995, 105, // ybh -> Deva - 3999, 105, // ybi -> Deva - 4003, 10, // ydg -> Arab - 4007, 325, // yea -> Mlym - 4011, 150, // yej -> Grek - 4015, 525, // yeu -> Telu - 4019, 415, // ygp -> Plrd - 4023, 185, // yhd -> Hebr - 4027, 185, // yi -> Hebr - 4030, 585, // yig -> Yiii - 4034, 185, // yih -> Hebr - 4038, 585, // yiv -> Yiii - 4042, 100, // ykg -> Cyrl - 4046, 100, // ykh -> Cyrl - 4050, 415, // yna -> Plrd - 4054, 100, // ynk -> Cyrl - 4058, 210, // yoi -> Jpan - 4062, 540, // yoy -> Thai - 4066, 100, // yrk -> Cyrl - 4070, 585, // ysd -> Yiii - 4074, 585, // ysn -> Yiii - 4078, 585, // ysp -> Yiii - 4082, 100, // ysr -> Cyrl - 4086, 415, // ysy -> Plrd - 4090, 185, // yud -> Hebr - 4094, 180, // yue -> Hant - 4098, 175, // yue_CN -> Hans - 4105, 100, // yug -> Cyrl - 4109, 100, // yux -> Cyrl - 4113, 415, // ywq -> Plrd - 4117, 415, // ywu -> Plrd - 4121, 545, // zau -> Tibt - 4125, 10, // zba -> Arab - 4129, 170, // zch -> Hani - 4133, 10, // zdj -> Arab - 4137, 170, // zeh -> Hani - 4141, 530, // zen -> Tfng - 4145, 170, // zgb -> Hani - 4149, 530, // zgh -> Tfng - 4153, 170, // zgm -> Hani - 4157, 170, // zgn -> Hani - 4161, 175, // zh -> Hans - 4164, 180, // zh_AU -> Hant - 4170, 180, // zh_BN -> Hant - 4176, 180, // zh_GB -> Hant - 4182, 180, // zh_GF -> Hant - 4188, 180, // zh_HK -> Hant - 4194, 180, // zh_ID -> Hant - 4200, 180, // zh_MO -> Hant - 4206, 180, // zh_PA -> Hant - 4212, 180, // zh_PF -> Hant - 4218, 180, // zh_PH -> Hant - 4224, 180, // zh_SR -> Hant - 4230, 180, // zh_TH -> Hant - 4236, 180, // zh_TW -> Hant - 4242, 180, // zh_US -> Hant - 4248, 180, // zh_VN -> Hant - 4254, 170, // zhd -> Hani - 4258, 100, // zko -> Cyrl - 4262, 235, // zkt -> Kits - 4266, 100, // zkz -> Cyrl - 4270, 170, // zlj -> Hani - 4274, 170, // zln -> Hani - 4278, 170, // zlq -> Hani - 4282, 170, // zqe -> Hani - 4286, 385, // zrg -> Orya - 4290, 185, // zrp -> Hebr - 4294, 10, // zum -> Arab - 4298, 120, // zwa -> Ethi - 4302, 170, // zyg -> Hani - 4306, 170, // zyn -> Hani - 4310, 170, // zzj -> Hani + 726, 485, // cmg -> Soyo + 730, 550, // cna -> Tibt + 734, 170, // cnp -> Hans + 738, 535, // cnu -> Tfng + 742, 545, // cog -> Thai + 746, 90, // cop -> Copt + 750, 145, // cpg -> Grek + 754, 170, // cpx -> Hans + 758, 65, // cr -> Cans + 761, 100, // crh -> Cyrl + 765, 65, // crj -> Cans + 769, 65, // crk -> Cans + 773, 65, // crl -> Cans + 777, 65, // crm -> Cans + 781, 350, // csh -> Mymr + 785, 350, // csj -> Mymr + 789, 170, // csp -> Hans + 793, 65, // csw -> Cans + 797, 400, // ctd -> Pauc + 801, 45, // ctg -> Beng + 805, 105, // ctn -> Deva + 809, 515, // ctt -> Taml + 813, 515, // cty -> Taml + 817, 100, // cu -> Cyrl + 820, 250, // cuu -> Lana + 824, 100, // cv -> Cyrl + 827, 170, // czh -> Hans + 831, 180, // czk -> Hebr + 835, 105, // daq -> Deva + 839, 100, // dar -> Cyrl + 843, 10, // dcc -> Arab + 847, 100, // ddo -> Cyrl + 851, 10, // def -> Arab + 855, 10, // deh -> Arab + 859, 45, // der -> Beng + 863, 10, // dgl -> Arab + 867, 105, // dhi -> Deva + 871, 150, // dhn -> Gujr + 875, 150, // dho -> Gujr + 879, 105, // dhw -> Deva + 883, 550, // dka -> Tibt + 887, 100, // dlg -> Cyrl + 891, 315, // dmf -> Medf + 895, 10, // dmk -> Arab + 899, 10, // dml -> Arab + 903, 100, // dng -> Cyrl + 907, 350, // dnu -> Mymr + 911, 350, // dnv -> Mymr + 915, 105, // doi -> Deva + 919, 120, // dox -> Ethi + 923, 550, // dre -> Tibt + 927, 105, // drq -> Deva + 931, 120, // drs -> Ethi + 935, 105, // dry -> Deva + 939, 385, // dso -> Orya + 943, 105, // dty -> Deva + 947, 150, // dub -> Gujr + 951, 105, // duh -> Deva + 955, 105, // dus -> Deva + 959, 540, // dv -> Thaa + 962, 385, // dwk -> Orya + 966, 105, // dwz -> Deva + 970, 550, // dz -> Tibt + 973, 550, // dzl -> Tibt + 977, 145, // ecr -> Grek + 981, 95, // ecy -> Cprt + 985, 110, // egy -> Egyp + 989, 215, // eky -> Kali + 993, 145, // el -> Grek + 996, 105, // emg -> Deva + 1000, 105, // emu -> Deva + 1004, 100, // enf -> Cyrl + 1008, 100, // enh -> Cyrl + 1012, 515, // era -> Taml + 1016, 130, // esg -> Gonm + 1020, 10, // esh -> Arab + 1024, 195, // ett -> Ital + 1028, 100, // eve -> Cyrl + 1032, 100, // evn -> Cyrl + 1036, 10, // fa -> Arab + 1039, 10, // fay -> Arab + 1043, 10, // faz -> Arab + 1047, 10, // fia -> Arab + 1051, 105, // fmu -> Deva + 1055, 10, // fub -> Arab + 1059, 170, // gan -> Hans + 1063, 385, // gaq -> Orya + 1067, 150, // gas -> Gujr + 1071, 530, // gau -> Telu + 1075, 385, // gbj -> Orya + 1079, 105, // gbk -> Deva + 1083, 150, // gbl -> Gujr + 1087, 105, // gbm -> Deva + 1091, 10, // gbz -> Arab + 1095, 385, // gdb -> Orya + 1099, 100, // gdo -> Cyrl + 1103, 105, // gdx -> Deva + 1107, 120, // gez -> Ethi + 1111, 10, // ggg -> Arab + 1115, 10, // gha -> Arab + 1119, 105, // ghe -> Deva + 1123, 535, // gho -> Tfng + 1127, 10, // ghr -> Arab + 1131, 550, // ght -> Tibt + 1135, 10, // gig -> Arab + 1139, 100, // gin -> Cyrl + 1143, 10, // gjk -> Arab + 1147, 10, // gju -> Arab + 1151, 100, // gld -> Cyrl + 1155, 10, // glh -> Arab + 1159, 10, // glk -> Arab + 1163, 260, // gml -> Latf + 1167, 120, // gmv -> Ethi + 1171, 280, // gmy -> Linb + 1175, 550, // goe -> Tibt + 1179, 120, // gof -> Ethi + 1183, 105, // goj -> Deva + 1187, 105, // gok -> Deva + 1191, 105, // gon -> Deva + 1195, 135, // got -> Goth + 1199, 105, // gra -> Deva + 1203, 145, // grc -> Grek + 1207, 10, // grr -> Arab + 1211, 45, // grt -> Beng + 1215, 120, // gru -> Ethi + 1219, 150, // gu -> Gujr + 1222, 105, // gvr -> Deva + 1226, 10, // gwc -> Arab + 1230, 10, // gwf -> Arab + 1234, 10, // gwt -> Arab + 1238, 105, // gyo -> Deva + 1242, 10, // gzi -> Arab + 1246, 10, // ha_CM -> Arab + 1252, 10, // ha_SD -> Arab + 1258, 10, // hac -> Arab + 1262, 170, // hak -> Hans + 1266, 175, // hak_TW -> Hant + 1273, 120, // har -> Ethi + 1277, 10, // haz -> Arab + 1281, 180, // hbo -> Hebr + 1285, 120, // hdy -> Ethi + 1289, 180, // he -> Hebr + 1292, 105, // hi -> Deva + 1295, 105, // hif -> Deva + 1299, 500, // hii -> Takr + 1303, 585, // hit -> Xsux + 1307, 10, // hkh -> Arab + 1311, 105, // hlb -> Deva + 1315, 185, // hlu -> Hluw + 1319, 415, // hmd -> Plrd + 1323, 50, // hmj -> Bopo + 1327, 50, // hmq -> Bopo + 1331, 10, // hnd -> Arab + 1335, 105, // hne -> Deva + 1339, 190, // hnj -> Hmnp + 1343, 170, // hnm -> Hans + 1347, 10, // hno -> Arab + 1351, 105, // hoc -> Deva + 1355, 10, // hoh -> Arab + 1359, 105, // hoj -> Deva + 1363, 165, // how -> Hani + 1367, 105, // hoy -> Deva + 1371, 350, // hpo -> Mymr + 1375, 490, // hrt -> Syrc + 1379, 10, // hrz -> Arab + 1383, 170, // hsn -> Hans + 1387, 10, // hss -> Arab + 1391, 585, // htx -> Xsux + 1395, 105, // hut -> Deva + 1399, 180, // huy -> Hebr + 1403, 100, // huz -> Cyrl + 1407, 20, // hy -> Armn + 1410, 20, // hyw -> Armn + 1414, 590, // ii -> Yiii + 1417, 290, // imy -> Lyci + 1421, 100, // inh -> Cyrl + 1425, 350, // int -> Mymr + 1429, 120, // ior -> Ethi + 1433, 515, // iru -> Taml + 1437, 10, // isk -> Arab + 1441, 180, // itk -> Hebr + 1445, 100, // itl -> Cyrl + 1449, 65, // iu -> Cans + 1452, 180, // iw -> Hebr + 1455, 205, // ja -> Jpan + 1458, 10, // jad -> Arab + 1462, 10, // jat -> Arab + 1466, 180, // jbe -> Hebr + 1470, 10, // jbn -> Arab + 1474, 100, // jct -> Cyrl + 1478, 550, // jda -> Tibt + 1482, 10, // jdg -> Arab + 1486, 100, // jdt -> Cyrl + 1490, 105, // jee -> Deva + 1494, 125, // jge -> Geor + 1498, 180, // ji -> Hebr + 1501, 160, // jje -> Hang + 1505, 350, // jkp -> Mymr + 1509, 105, // jml -> Deva + 1513, 500, // jna -> Takr + 1517, 10, // jnd -> Arab + 1521, 105, // jnl -> Deva + 1525, 105, // jns -> Deva + 1529, 10, // jog -> Arab + 1533, 180, // jpa -> Hebr + 1537, 180, // jpr -> Hebr + 1541, 180, // jrb -> Hebr + 1545, 210, // juc -> Jurc + 1549, 105, // jul -> Deva + 1553, 385, // jun -> Orya + 1557, 385, // juy -> Orya + 1561, 550, // jya -> Tibt + 1565, 180, // jye -> Hebr + 1569, 125, // ka -> Geor + 1572, 100, // kaa -> Cyrl + 1576, 100, // kap -> Cyrl + 1580, 30, // kaw -> Bali + 1584, 100, // kbd -> Cyrl + 1588, 550, // kbg -> Tibt + 1592, 10, // kbu -> Arab + 1596, 10, // kby -> Arab + 1600, 100, // kca -> Cyrl + 1604, 10, // kcy -> Arab + 1608, 45, // kdq -> Beng + 1612, 545, // kdt -> Thai + 1616, 100, // ket -> Cyrl + 1620, 325, // kev -> Mlym + 1624, 105, // kex -> Deva + 1628, 530, // key -> Telu + 1632, 240, // kfa -> Knda + 1636, 105, // kfb -> Deva + 1640, 530, // kfc -> Telu + 1644, 240, // kfd -> Knda + 1648, 515, // kfe -> Taml + 1652, 240, // kfg -> Knda + 1656, 325, // kfh -> Mlym + 1660, 515, // kfi -> Taml + 1664, 105, // kfk -> Deva + 1668, 10, // kfm -> Arab + 1672, 105, // kfp -> Deva + 1676, 105, // kfq -> Deva + 1680, 105, // kfr -> Deva + 1684, 105, // kfs -> Deva + 1688, 105, // kfu -> Deva + 1692, 105, // kfx -> Deva + 1696, 105, // kfy -> Deva + 1700, 105, // kgj -> Deva + 1704, 550, // kgy -> Tibt + 1708, 510, // khb -> Talu + 1712, 545, // khf -> Thai + 1716, 550, // khg -> Tibt + 1720, 105, // khn -> Deva + 1724, 55, // kho -> Brah + 1728, 350, // kht -> Mymr + 1732, 100, // khv -> Cyrl + 1736, 10, // khw -> Arab + 1740, 105, // kif -> Deva + 1744, 100, // kim -> Cyrl + 1748, 105, // kip -> Deva + 1752, 255, // kjg -> Laoo + 1756, 100, // kjh -> Cyrl + 1760, 105, // kjl -> Deva + 1764, 105, // kjo -> Deva + 1768, 350, // kjp -> Mymr + 1772, 545, // kjt -> Thai + 1776, 550, // kjz -> Tibt + 1780, 100, // kk -> Cyrl + 1783, 10, // kk_AF -> Arab + 1789, 10, // kk_CN -> Arab + 1795, 10, // kk_IR -> Arab + 1801, 10, // kk_MN -> Arab + 1807, 550, // kkf -> Tibt + 1811, 250, // kkh -> Lana + 1815, 105, // kkt -> Deva + 1819, 105, // kle -> Deva + 1823, 10, // klj -> Arab + 1827, 105, // klr -> Deva + 1831, 230, // km -> Khmr + 1834, 105, // kmj -> Deva + 1838, 10, // kmz -> Arab + 1842, 240, // kn -> Knda + 1845, 105, // knn -> Deva + 1849, 245, // ko -> Kore + 1852, 100, // koi -> Cyrl + 1856, 105, // kok -> Deva + 1860, 100, // kpt -> Cyrl + 1864, 100, // kpy -> Cyrl + 1868, 490, // kqd -> Syrc + 1872, 120, // kqy -> Ethi + 1876, 105, // kra -> Deva + 1880, 100, // krc -> Cyrl + 1884, 100, // krk -> Cyrl + 1888, 230, // krr -> Khmr + 1892, 105, // kru -> Deva + 1896, 230, // krv -> Khmr + 1900, 10, // ks -> Arab + 1903, 350, // ksu -> Mymr + 1907, 350, // ksw -> Mymr + 1911, 105, // ksz -> Deva + 1915, 120, // ktb -> Ethi + 1919, 105, // kte -> Deva + 1923, 10, // ktl -> Arab + 1927, 415, // ktp -> Plrd + 1931, 100, // ku_AM -> Cyrl + 1937, 100, // ku_AZ -> Cyrl + 1943, 100, // ku_GE -> Cyrl + 1949, 10, // ku_IQ -> Arab + 1955, 10, // ku_IR -> Arab + 1961, 10, // ku_LB -> Arab + 1967, 100, // ku_TM -> Cyrl + 1973, 255, // kuf -> Laoo + 1977, 100, // kum -> Cyrl + 1981, 100, // kv -> Cyrl + 1984, 100, // kva -> Cyrl + 1988, 350, // kvq -> Mymr + 1992, 350, // kvt -> Mymr + 1996, 10, // kvx -> Arab + 2000, 215, // kvy -> Kali + 2004, 105, // kwx -> Deva + 2008, 350, // kxf -> Mymr + 2012, 350, // kxk -> Mymr + 2016, 545, // kxm -> Thai + 2020, 10, // kxp -> Arab + 2024, 100, // ky -> Cyrl + 2027, 10, // ky_CN -> Arab + 2033, 215, // kyu -> Kali + 2037, 105, // kyv -> Deva + 2041, 105, // kyw -> Deva + 2045, 105, // kzq -> Deva + 2049, 275, // lab -> Lina + 2053, 180, // lad -> Hebr + 2057, 105, // lae -> Deva + 2061, 10, // lah -> Arab + 2065, 100, // lbe -> Cyrl + 2069, 105, // lbf -> Deva + 2073, 550, // lbj -> Tibt + 2077, 105, // lbm -> Deva + 2081, 255, // lbo -> Laoo + 2085, 105, // lbr -> Deva + 2089, 545, // lcp -> Thai + 2093, 270, // lep -> Lepc + 2097, 100, // lez -> Cyrl + 2101, 105, // lhm -> Deva + 2105, 490, // lhs -> Syrc + 2109, 105, // lif -> Deva + 2113, 285, // lis -> Lisu + 2117, 550, // lkh -> Tibt + 2121, 10, // lki -> Arab + 2125, 105, // lmh -> Deva + 2129, 530, // lmn -> Telu + 2133, 255, // lo -> Laoo + 2136, 105, // loy -> Deva + 2140, 415, // lpo -> Plrd + 2144, 10, // lrc -> Arab + 2148, 10, // lrk -> Arab + 2152, 10, // lrl -> Arab + 2156, 10, // lsa -> Arab + 2160, 180, // lsd -> Hebr + 2164, 10, // lss -> Arab + 2168, 175, // ltc -> Hant + 2172, 170, // luh -> Hans + 2176, 550, // luk -> Tibt + 2180, 105, // luu -> Deva + 2184, 10, // luv -> Arab + 2188, 10, // luz -> Arab + 2192, 545, // lwl -> Thai + 2196, 545, // lwm -> Thai + 2200, 550, // lya -> Tibt + 2204, 175, // lzh -> Hant + 2208, 125, // lzz_GE -> Geor + 2215, 105, // mag -> Deva + 2219, 105, // mai -> Deva + 2223, 10, // mby -> Arab + 2227, 10, // mde -> Arab + 2231, 100, // mdf -> Cyrl + 2235, 120, // mdx -> Ethi + 2239, 120, // mdy -> Ethi + 2243, 10, // mey -> Arab + 2247, 10, // mfa -> Arab + 2251, 10, // mfi -> Arab + 2255, 265, // mga -> Latg + 2259, 105, // mgp -> Deva + 2263, 10, // mhj -> Arab + 2267, 300, // mid -> Mand + 2271, 105, // mjl -> Deva + 2275, 325, // mjq -> Mlym + 2279, 325, // mjr -> Mlym + 2283, 105, // mjt -> Deva + 2287, 530, // mju -> Telu + 2291, 325, // mjv -> Mlym + 2295, 105, // mjz -> Deva + 2299, 100, // mk -> Cyrl + 2302, 105, // mkb -> Deva + 2306, 105, // mke -> Deva + 2310, 10, // mki -> Arab + 2314, 545, // mkm -> Thai + 2318, 325, // ml -> Mlym + 2321, 545, // mlf -> Thai + 2325, 100, // mn -> Cyrl + 2328, 335, // mn_CN -> Mong + 2334, 335, // mnc -> Mong + 2338, 45, // mni -> Beng + 2342, 10, // mnj -> Arab + 2346, 170, // mnp -> Hans + 2350, 100, // mns -> Cyrl + 2354, 350, // mnw -> Mymr + 2358, 545, // mpz -> Thai + 2362, 105, // mr -> Deva + 2365, 545, // mra -> Thai + 2369, 100, // mrj -> Cyrl + 2373, 340, // mro -> Mroo + 2377, 105, // mrr -> Deva + 2381, 10, // ms_CC -> Arab + 2387, 100, // mtm -> Cyrl + 2391, 105, // mtr -> Deva + 2395, 100, // mud -> Cyrl + 2399, 550, // muk -> Tibt + 2403, 105, // mut -> Deva + 2407, 515, // muv -> Taml + 2411, 120, // muz -> Ethi + 2415, 10, // mve -> Arab + 2419, 335, // mvf -> Mong + 2423, 10, // mvy -> Arab + 2427, 120, // mvz -> Ethi + 2431, 105, // mwr -> Deva + 2435, 350, // mwt -> Mymr + 2439, 190, // mww -> Hmnp + 2443, 350, // my -> Mymr + 2446, 120, // mym -> Ethi + 2450, 100, // myv -> Cyrl + 2454, 300, // myz -> Mand + 2458, 10, // mzb -> Arab + 2462, 10, // mzn -> Arab + 2466, 170, // nan -> Hans + 2470, 175, // nan_MO -> Hant + 2477, 175, // nan_TW -> Hant + 2484, 105, // nao -> Deva + 2488, 105, // ncd -> Deva + 2492, 255, // ncq -> Laoo + 2496, 100, // ndf -> Cyrl + 2500, 105, // ne -> Deva + 2503, 100, // neg -> Cyrl + 2507, 550, // neh -> Tibt + 2511, 585, // nei -> Xsux + 2515, 255, // nev -> Laoo + 2519, 105, // new -> Deva + 2523, 255, // ngt -> Laoo + 2527, 100, // nio -> Cyrl + 2531, 530, // nit -> Telu + 2535, 100, // niv -> Cyrl + 2539, 10, // nli -> Arab + 2543, 105, // nll -> Deva + 2547, 10, // nlm -> Arab + 2551, 105, // nlx -> Deva + 2555, 105, // nmm -> Deva + 2559, 575, // nnp -> Wcho + 2563, 250, // nod -> Lana + 2567, 105, // noe -> Deva + 2571, 100, // nog -> Cyrl + 2575, 105, // noi -> Deva + 2579, 435, // non -> Runr + 2583, 590, // nos -> Yiii + 2587, 550, // npb -> Tibt + 2591, 365, // nqo -> Nkoo + 2595, 435, // nrn -> Runr + 2599, 590, // nsd -> Yiii + 2603, 590, // nsf -> Yiii + 2607, 65, // nsk -> Cans + 2611, 555, // nst -> Tnsa + 2615, 590, // nsv -> Yiii + 2619, 590, // nty -> Yiii + 2623, 10, // ntz -> Arab + 2627, 360, // nwc -> Newa + 2631, 105, // nwx -> Deva + 2635, 545, // nyl -> Thai + 2639, 10, // nyq -> Arab + 2643, 545, // nyw -> Thai + 2647, 100, // oaa -> Cyrl + 2651, 100, // oac -> Cyrl + 2655, 45, // oak -> Beng + 2659, 490, // oar -> Syrc + 2663, 125, // oav -> Geor + 2667, 410, // obm -> Phnx + 2671, 350, // obr -> Mymr + 2675, 455, // och -> Seal + 2679, 10, // odk -> Arab + 2683, 585, // oht -> Xsux + 2687, 65, // oj -> Cans + 2690, 65, // ojs -> Cans + 2694, 160, // okm -> Hang + 2698, 165, // oko -> Hani + 2702, 230, // okz -> Khmr + 2706, 105, // ola -> Deva + 2710, 550, // ole -> Tibt + 2714, 100, // omk -> Cyrl + 2718, 345, // omp -> Mtei + 2722, 330, // omr -> Modi + 2726, 350, // omx -> Mymr + 2730, 10, // omy -> Arab + 2734, 105, // oon -> Deva + 2738, 385, // or -> Orya + 2741, 530, // ort -> Telu + 2745, 10, // oru -> Arab + 2749, 100, // orv -> Cyrl + 2753, 100, // os -> Cyrl + 2756, 390, // osa -> Osge + 2760, 195, // osc -> Ital + 2764, 100, // osd -> Cyrl + 2768, 200, // osi -> Java + 2772, 10, // ota -> Arab + 2776, 550, // otb -> Tibt + 2780, 380, // otk -> Orkh + 2784, 140, // oty -> Gran + 2788, 395, // oui -> Ougr + 2792, 255, // oyb -> Laoo + 2796, 155, // pa -> Guru + 2799, 10, // pa_PK -> Arab + 2805, 405, // pal -> Phli + 2809, 100, // paq -> Cyrl + 2813, 10, // pbt -> Arab + 2817, 230, // pcb -> Khmr + 2821, 350, // pce -> Mymr + 2825, 325, // pcf -> Mlym + 2829, 325, // pcg -> Mlym + 2833, 105, // pch -> Deva + 2837, 105, // pci -> Deva + 2841, 530, // pcj -> Telu + 2845, 385, // peg -> Orya + 2849, 580, // peo -> Xpeo + 2853, 225, // pgd -> Khar + 2857, 105, // pgg -> Deva + 2861, 370, // pgl -> Ogam + 2865, 195, // pgn -> Ital + 2869, 105, // phd -> Deva + 2873, 350, // phk -> Mymr + 2877, 10, // phl -> Arab + 2881, 410, // phn -> Phnx + 2885, 255, // pho -> Laoo + 2889, 10, // phr -> Arab + 2893, 545, // pht -> Thai + 2897, 545, // phu -> Thai + 2901, 10, // phv -> Arab + 2905, 105, // phw -> Deva + 2909, 105, // pi_IN -> Deva + 2915, 470, // pi_LK -> Sinh + 2921, 350, // pi_MM -> Mymr + 2927, 545, // pi_TH -> Thai + 2933, 55, // pka -> Brah + 2937, 325, // pkr -> Mlym + 2941, 10, // plk -> Arab + 2945, 350, // pll -> Mymr + 2949, 55, // pmh -> Brah + 2953, 145, // pnt -> Grek + 2957, 100, // pnt_RU -> Cyrl + 2964, 255, // pnx -> Laoo + 2968, 10, // prc -> Arab + 2972, 10, // prd -> Arab + 2976, 545, // prt -> Thai + 2980, 10, // prx -> Arab + 2984, 10, // ps -> Arab + 2987, 10, // psh -> Arab + 2991, 10, // psi -> Arab + 2995, 10, // pst -> Arab + 2999, 55, // psu -> Brah + 3003, 105, // pum -> Deva + 3007, 350, // pwo -> Mymr + 3011, 105, // pwr -> Deva + 3015, 545, // pww -> Thai + 3019, 350, // pyx -> Mymr + 3023, 10, // qxq -> Arab + 3027, 105, // raa -> Deva + 3031, 105, // rab -> Deva + 3035, 105, // raf -> Deva + 3039, 45, // rah -> Beng + 3043, 105, // raj -> Deva + 3047, 105, // rav -> Deva + 3051, 350, // rbb -> Mymr + 3055, 10, // rdb -> Arab + 3059, 385, // rei -> Orya + 3063, 430, // rhg -> Rohg + 3067, 105, // rji -> Deva + 3071, 105, // rjs -> Deva + 3075, 230, // rka -> Khmr + 3079, 350, // rki -> Mymr + 3083, 45, // rkt -> Beng + 3087, 20, // rmi -> Armn + 3091, 10, // rmt -> Arab + 3095, 350, // rmz -> Mymr + 3099, 100, // rsk -> Cyrl + 3103, 105, // rtw -> Deva + 3107, 100, // ru -> Cyrl + 3110, 100, // rue -> Cyrl + 3114, 100, // rut -> Cyrl + 3118, 105, // rwr -> Deva + 3122, 220, // ryu -> Kana + 3126, 105, // sa -> Deva + 3129, 100, // sah -> Cyrl + 3133, 440, // sam -> Samr + 3137, 375, // sat -> Olck + 3141, 450, // saz -> Saur + 3145, 10, // sbn -> Arab + 3149, 550, // sbu -> Tibt + 3153, 105, // sck -> Deva + 3157, 10, // scl -> Arab + 3161, 105, // scp -> Deva + 3165, 255, // sct -> Laoo + 3169, 500, // scu -> Takr + 3173, 145, // scx -> Grek + 3177, 10, // sd -> Arab + 3180, 105, // sd_IN -> Deva + 3186, 10, // sdb -> Arab + 3190, 10, // sdf -> Arab + 3194, 10, // sdg -> Arab + 3198, 10, // sdh -> Arab + 3202, 45, // sdr -> Beng + 3206, 10, // sds -> Arab + 3210, 100, // sel -> Cyrl + 3214, 415, // sfm -> Plrd + 3218, 100, // sgh -> Cyrl + 3222, 105, // sgj -> Deva + 3226, 10, // sgr -> Arab + 3230, 550, // sgt -> Tibt + 3234, 120, // sgw -> Ethi + 3238, 10, // sgy -> Arab + 3242, 10, // shd -> Arab + 3246, 535, // shi -> Tfng + 3250, 10, // shm -> Arab + 3254, 350, // shn -> Mymr + 3258, 10, // shu -> Arab + 3262, 10, // shv -> Arab + 3266, 470, // si -> Sinh + 3269, 100, // sia -> Cyrl + 3273, 550, // sip -> Tibt + 3277, 10, // siy -> Arab + 3281, 10, // siz -> Arab + 3285, 170, // sjc -> Hans + 3289, 100, // sjd -> Cyrl + 3293, 105, // sjp -> Deva + 3297, 100, // sjt -> Cyrl + 3301, 545, // skb -> Thai + 3305, 105, // skj -> Deva + 3309, 10, // skr -> Arab + 3313, 240, // sle -> Knda + 3317, 590, // smh -> Yiii + 3321, 440, // smp -> Samr + 3325, 230, // smu -> Khmr + 3329, 10, // smy -> Arab + 3333, 525, // soa -> Tavt + 3337, 475, // sog -> Sogd + 3341, 105, // soi -> Deva + 3345, 545, // sou -> Thai + 3349, 550, // spt -> Tibt + 3353, 385, // spv -> Orya + 3357, 10, // sqo -> Arab + 3361, 255, // sqq -> Laoo + 3365, 10, // sqt -> Arab + 3369, 100, // sr -> Cyrl + 3372, 480, // srb -> Sora + 3376, 10, // srh -> Arab + 3380, 105, // srx -> Deva + 3384, 10, // srz -> Arab + 3388, 10, // ssh -> Arab + 3392, 255, // sss -> Laoo + 3396, 10, // sts -> Arab + 3400, 250, // stu -> Lana + 3404, 505, // stu_CN -> Tale + 3411, 120, // stv -> Ethi + 3415, 100, // sty -> Cyrl + 3419, 105, // suz -> Deva + 3423, 125, // sva -> Geor + 3427, 10, // swb -> Arab + 3431, 165, // swi -> Hani + 3435, 105, // swv -> Deva + 3439, 435, // sxu -> Runr + 3443, 490, // syc -> Syrc + 3447, 45, // syl -> Beng + 3451, 490, // syn -> Syrc + 3455, 490, // syr -> Syrc + 3459, 105, // syw -> Deva + 3463, 515, // ta -> Taml + 3466, 100, // tab -> Cyrl + 3470, 105, // taj -> Deva + 3474, 495, // tbk -> Tagb + 3478, 105, // tcn -> Deva + 3482, 350, // tco -> Mymr + 3486, 515, // tcx -> Taml + 3490, 240, // tcy -> Knda + 3494, 535, // tda -> Tfng + 3498, 105, // tdb -> Deva + 3502, 505, // tdd -> Tale + 3506, 105, // tdg -> Deva + 3510, 105, // tdh -> Deva + 3514, 530, // te -> Telu + 3517, 200, // tes -> Java + 3521, 100, // tg -> Cyrl + 3524, 10, // tg_PK -> Arab + 3530, 105, // tge -> Deva + 3534, 550, // tgf -> Tibt + 3538, 545, // th -> Thai + 3541, 105, // the -> Deva + 3545, 105, // thf -> Deva + 3549, 505, // thi -> Tale + 3553, 105, // thl -> Deva + 3557, 545, // thm -> Thai + 3561, 105, // thq -> Deva + 3565, 105, // thr -> Deva + 3569, 105, // ths -> Deva + 3573, 120, // ti -> Ethi + 3576, 120, // tig -> Ethi + 3580, 105, // tij -> Deva + 3584, 100, // tin -> Cyrl + 3588, 350, // tjl -> Mymr + 3592, 10, // tjo -> Arab + 3596, 105, // tkb -> Deva + 3600, 10, // tks -> Arab + 3604, 105, // tkt -> Deva + 3608, 490, // tmr -> Syrc + 3612, 60, // tnv -> Cakm + 3616, 10, // tov -> Arab + 3620, 230, // tpu -> Khmr + 3624, 10, // tra -> Arab + 3628, 180, // trg -> Hebr + 3632, 10, // trm -> Arab + 3636, 10, // trw -> Arab + 3640, 145, // tsd -> Grek + 3644, 550, // tsj -> Tibt + 3648, 100, // tt -> Cyrl + 3651, 255, // tth -> Laoo + 3655, 255, // tto -> Laoo + 3659, 545, // tts -> Thai + 3663, 105, // ttz -> Deva + 3667, 350, // tvn -> Mymr + 3671, 550, // twm -> Tibt + 3675, 520, // txg -> Tang + 3679, 560, // txo -> Toto + 3683, 525, // tyr -> Tavt + 3687, 100, // tyv -> Cyrl + 3691, 100, // ude -> Cyrl + 3695, 325, // udg -> Mlym + 3699, 100, // udi -> Cyrl + 3703, 100, // udm -> Cyrl + 3707, 10, // ug -> Arab + 3710, 100, // ug_KZ -> Cyrl + 3716, 100, // ug_MN -> Cyrl + 3722, 565, // uga -> Ugar + 3726, 100, // ugh -> Cyrl + 3730, 545, // ugo -> Thai + 3734, 100, // uk -> Cyrl + 3737, 385, // uki -> Orya + 3741, 100, // ulc -> Cyrl + 3745, 45, // unr -> Beng + 3749, 105, // unr_NP -> Deva + 3756, 45, // unx -> Beng + 3760, 10, // ur -> Arab + 3763, 545, // urk -> Thai + 3767, 10, // ush -> Arab + 3771, 145, // uum -> Grek + 3775, 10, // uz_AF -> Arab + 3781, 100, // uz_CN -> Cyrl + 3787, 10, // uzs -> Arab + 3791, 515, // vaa -> Taml + 3795, 10, // vaf -> Arab + 3799, 105, // vah -> Deva + 3803, 570, // vai -> Vaii + 3807, 105, // vas -> Deva + 3811, 105, // vav -> Deva + 3815, 105, // vay -> Deva + 3819, 10, // vgr -> Arab + 3823, 105, // vjk -> Deva + 3827, 240, // vmd -> Knda + 3831, 10, // vmh -> Arab + 3835, 120, // wal -> Ethi + 3839, 10, // wbk -> Arab + 3843, 530, // wbq -> Telu + 3847, 105, // wbr -> Deva + 3851, 120, // wle -> Ethi + 3855, 105, // wly -> Deva + 3859, 105, // wme -> Deva + 3863, 10, // wne -> Arab + 3867, 10, // wni -> Arab + 3871, 530, // wsg -> Telu + 3875, 10, // wsv -> Arab + 3879, 105, // wtm -> Deva + 3883, 170, // wuu -> Hans + 3887, 0, // xag -> Aghb + 3891, 100, // xal -> Cyrl + 3895, 120, // xan -> Ethi + 3899, 100, // xas -> Cyrl + 3903, 85, // xco -> Chrs + 3907, 70, // xcr -> Cari + 3911, 100, // xdq -> Cyrl + 3915, 10, // xhe -> Arab + 3919, 230, // xhm -> Khmr + 3923, 385, // xis -> Orya + 3927, 10, // xka -> Arab + 3931, 10, // xkc -> Arab + 3935, 550, // xkf -> Tibt + 3939, 10, // xkj -> Arab + 3943, 230, // xkk -> Khmr + 3947, 10, // xkp -> Arab + 3951, 290, // xlc -> Lyci + 3955, 295, // xld -> Lydi + 3959, 115, // xly -> Elym + 3963, 125, // xmf -> Geor + 3967, 305, // xmn -> Mani + 3971, 320, // xmr -> Merc + 3975, 355, // xna -> Narb + 3979, 105, // xnr -> Deva + 3983, 145, // xpg -> Grek + 3987, 370, // xpi -> Ogam + 3991, 100, // xpm -> Cyrl + 3995, 420, // xpr -> Prti + 3999, 100, // xrm -> Cyrl + 4003, 100, // xrn -> Cyrl + 4007, 445, // xsa -> Sarb + 4011, 465, // xsd -> Sidt + 4015, 105, // xsr -> Deva + 4019, 55, // xtq -> Brah + 4023, 515, // xua -> Taml + 4027, 515, // xub -> Taml + 4031, 515, // xuj -> Taml + 4035, 195, // xve -> Ital + 4039, 10, // xvi -> Arab + 4043, 100, // xwo -> Cyrl + 4047, 310, // xzh -> Marc + 4051, 100, // yai -> Cyrl + 4055, 105, // ybh -> Deva + 4059, 105, // ybi -> Deva + 4063, 10, // ydg -> Arab + 4067, 325, // yea -> Mlym + 4071, 145, // yej -> Grek + 4075, 530, // yeu -> Telu + 4079, 415, // ygp -> Plrd + 4083, 180, // yhd -> Hebr + 4087, 180, // yi -> Hebr + 4090, 590, // yig -> Yiii + 4094, 180, // yih -> Hebr + 4098, 350, // yin -> Mymr + 4102, 590, // yiv -> Yiii + 4106, 100, // ykg -> Cyrl + 4110, 100, // ykh -> Cyrl + 4114, 415, // yna -> Plrd + 4118, 100, // ynk -> Cyrl + 4122, 205, // yoi -> Jpan + 4126, 545, // yoy -> Thai + 4130, 100, // yrk -> Cyrl + 4134, 590, // ysd -> Yiii + 4138, 590, // ysn -> Yiii + 4142, 590, // ysp -> Yiii + 4146, 100, // ysr -> Cyrl + 4150, 415, // ysy -> Plrd + 4154, 180, // yud -> Hebr + 4158, 175, // yue -> Hant + 4162, 170, // yue_CN -> Hans + 4169, 100, // yug -> Cyrl + 4173, 100, // yux -> Cyrl + 4177, 415, // ywq -> Plrd + 4181, 415, // ywu -> Plrd + 4185, 550, // zau -> Tibt + 4189, 10, // zba -> Arab + 4193, 165, // zch -> Hani + 4197, 10, // zdj -> Arab + 4201, 165, // zeh -> Hani + 4205, 535, // zen -> Tfng + 4209, 165, // zgb -> Hani + 4213, 535, // zgh -> Tfng + 4217, 165, // zgm -> Hani + 4221, 165, // zgn -> Hani + 4225, 170, // zh -> Hans + 4228, 175, // zh_AU -> Hant + 4234, 175, // zh_BN -> Hant + 4240, 175, // zh_GB -> Hant + 4246, 175, // zh_GF -> Hant + 4252, 175, // zh_HK -> Hant + 4258, 175, // zh_ID -> Hant + 4264, 175, // zh_MO -> Hant + 4270, 175, // zh_PA -> Hant + 4276, 175, // zh_PF -> Hant + 4282, 175, // zh_PH -> Hant + 4288, 175, // zh_SR -> Hant + 4294, 175, // zh_TH -> Hant + 4300, 175, // zh_TW -> Hant + 4306, 175, // zh_US -> Hant + 4312, 175, // zh_VN -> Hant + 4318, 165, // zhd -> Hani + 4322, 350, // zkn -> Mymr + 4326, 100, // zko -> Cyrl + 4330, 235, // zkt -> Kits + 4334, 100, // zkz -> Cyrl + 4338, 165, // zlj -> Hani + 4342, 165, // zln -> Hani + 4346, 165, // zlq -> Hani + 4350, 165, // zqe -> Hani + 4354, 385, // zrg -> Orya + 4358, 180, // zrp -> Hebr + 4362, 10, // zum -> Arab + 4366, 120, // zwa -> Ethi + 4370, 165, // zyg -> Hani + 4374, 165, // zyn -> Hani + 4378, 165, // zzj -> Hani }; -//====================================================================== +// ====================================================================== // Parent locale table const char parentLocaleChars[] = "az_Arab\0az_Cyrl\0bal_Latn\0blt_Latn\0bm_Nkoo\0bs_Cyrl\0byn_Latn\0" @@ -1197,27 +1216,27 @@ const char parentLocaleChars[] = "en_UA\0en_UG\0en_VC\0en_VG\0en_VU\0en_WS\0en_ZA\0en_ZM\0en_ZW\0" "es_419\0es_AR\0es_BO\0es_BR\0es_BZ\0es_CL\0es_CO\0es_CR\0es_CU\0" "es_DO\0es_EC\0es_GT\0es_HN\0es_JP\0es_MX\0es_NI\0es_PA\0es_PE\0" - "es_PR\0es_PY\0es_SV\0es_US\0es_UY\0es_VE\0ff_Adlm\0ff_Arab\0fr_HT\0" - "ha_Arab\0hi_Latn\0ht\0iu_Latn\0kaa_Latn\0kk_Arab\0kok_Latn\0ks_Deva\0" - "ku_Arab\0kxv_Deva\0kxv_Orya\0kxv_Telu\0ky_Arab\0ky_Latn\0ml_Arab\0" - "mn_Mong\0mni_Mtei\0ms_Arab\0nb\0nn\0no\0no_NO\0pa_Arab\0pt_AO\0" - "pt_CH\0pt_CV\0pt_FR\0pt_GQ\0pt_GW\0pt_LU\0pt_MO\0pt_MZ\0pt_PT\0" - "pt_ST\0pt_TL\0root\0sat_Deva\0sd_Deva\0sd_Khoj\0sd_Sind\0shi_Latn\0" - "so_Arab\0sr_Latn\0suz_Sunu\0sw_Arab\0tg_Arab\0ug_Cyrl\0uz_Arab\0" - "uz_Cyrl\0vai_Latn\0wo_Arab\0yo_Arab\0yue_Hans\0zh_Hant\0zh_Hant_HK\0" - "zh_Hant_MO\0"; + "es_PR\0es_PY\0es_SV\0es_US\0es_UY\0es_VE\0ff_Adlm\0ff_Arab\0ha_Arab\0" + "hi_Latn\0iu_Latn\0kaa_Latn\0kk_Arab\0kok_Latn\0ks_Deva\0ku_Arab\0" + "kxv_Deva\0kxv_Orya\0kxv_Telu\0ky_Arab\0ky_Latn\0ml_Arab\0mn_Mong\0" + "mni_Mtei\0ms_Arab\0nb\0nn\0no\0no_NO\0pa_Arab\0pt_AO\0pt_CH\0" + "pt_CV\0pt_FR\0pt_GQ\0pt_GW\0pt_LU\0pt_MO\0pt_MZ\0pt_PT\0pt_ST\0" + "pt_TL\0root\0sat_Deva\0sd_Deva\0sd_Khoj\0sd_Sind\0shi_Latn\0so_Arab\0" + "sr_Latn\0suz_Sunu\0sw_Arab\0tg_Arab\0ug_Cyrl\0uz_Arab\0uz_Cyrl\0" + "vai_Latn\0wo_Arab\0yo_Arab\0yue_Hans\0zh_Hant\0zh_Hant_HK\0zh_Hant_MO\0" + ""; const int32_t parentLocaleTable[] = { - 0, 1176, // az_Arab -> root - 8, 1176, // az_Cyrl -> root - 16, 1176, // bal_Latn -> root - 25, 1176, // blt_Latn -> root - 34, 1176, // bm_Nkoo -> root - 42, 1176, // bs_Cyrl -> root - 50, 1176, // byn_Latn -> root - 59, 1176, // cu_Glag -> root - 67, 1176, // dje_Arab -> root - 76, 1176, // dyo_Arab -> root + 0, 1167, // az_Arab -> root + 8, 1167, // az_Cyrl -> root + 16, 1167, // bal_Latn -> root + 25, 1167, // blt_Latn -> root + 34, 1167, // bm_Nkoo -> root + 42, 1167, // bs_Cyrl -> root + 50, 1167, // byn_Latn -> root + 59, 1167, // cu_Glag -> root + 67, 1167, // dje_Arab -> root + 76, 1167, // dyo_Arab -> root 92, 85, // en_150 -> en_001 99, 85, // en_AG -> en_001 105, 85, // en_AI -> en_001 @@ -1240,7 +1259,7 @@ const int32_t parentLocaleTable[] = { 207, 85, // en_DG -> en_001 213, 92, // en_DK -> en_150 219, 85, // en_DM -> en_001 - 225, 1176, // en_Dsrt -> root + 225, 1167, // en_Dsrt -> root 233, 92, // en_EE -> en_150 239, 85, // en_ER -> en_001 245, 92, // en_ES -> en_150 @@ -1314,7 +1333,7 @@ const int32_t parentLocaleTable[] = { 653, 85, // en_SS -> en_001 659, 85, // en_SX -> en_001 665, 85, // en_SZ -> en_001 - 671, 1176, // en_Shaw -> root + 671, 1167, // en_Shaw -> root 679, 85, // en_TC -> en_001 685, 85, // en_TK -> en_001 691, 85, // en_TO -> en_001 @@ -1353,60 +1372,59 @@ const int32_t parentLocaleTable[] = { 896, 769, // es_US -> es_419 902, 769, // es_UY -> es_419 908, 769, // es_VE -> es_419 - 914, 1176, // ff_Adlm -> root - 922, 1176, // ff_Arab -> root - 936, 1176, // ha_Arab -> root - 944, 371, // hi_Latn -> en_IN - 952, 930, // ht -> fr_HT - 955, 1176, // iu_Latn -> root - 963, 1176, // kaa_Latn -> root - 972, 1176, // kk_Arab -> root - 980, 1176, // kok_Latn -> root - 989, 1176, // ks_Deva -> root - 997, 1176, // ku_Arab -> root - 1005, 1176, // kxv_Deva -> root - 1014, 1176, // kxv_Orya -> root - 1023, 1176, // kxv_Telu -> root - 1032, 1176, // ky_Arab -> root - 1040, 1176, // ky_Latn -> root - 1048, 1176, // ml_Arab -> root - 1056, 1176, // mn_Mong -> root - 1064, 1176, // mni_Mtei -> root - 1073, 1176, // ms_Arab -> root - 1081, 1087, // nb -> no - 1084, 1087, // nn -> no - 1090, 1087, // no_NO -> no - 1096, 1176, // pa_Arab -> root - 1104, 1158, // pt_AO -> pt_PT - 1110, 1158, // pt_CH -> pt_PT - 1116, 1158, // pt_CV -> pt_PT - 1122, 1158, // pt_FR -> pt_PT - 1128, 1158, // pt_GQ -> pt_PT - 1134, 1158, // pt_GW -> pt_PT - 1140, 1158, // pt_LU -> pt_PT - 1146, 1158, // pt_MO -> pt_PT - 1152, 1158, // pt_MZ -> pt_PT - 1164, 1158, // pt_ST -> pt_PT - 1170, 1158, // pt_TL -> pt_PT - 1181, 1176, // sat_Deva -> root - 1190, 1176, // sd_Deva -> root - 1198, 1176, // sd_Khoj -> root - 1206, 1176, // sd_Sind -> root - 1214, 1176, // shi_Latn -> root - 1223, 1176, // so_Arab -> root - 1231, 1176, // sr_Latn -> root - 1239, 1176, // suz_Sunu -> root - 1248, 1176, // sw_Arab -> root - 1256, 1176, // tg_Arab -> root - 1264, 1176, // ug_Cyrl -> root - 1272, 1176, // uz_Arab -> root - 1280, 1176, // uz_Cyrl -> root - 1288, 1176, // vai_Latn -> root - 1297, 1176, // wo_Arab -> root - 1305, 1176, // yo_Arab -> root - 1313, 1176, // yue_Hans -> root - 1322, 1176, // zh_Hant -> root - 1341, 1330, // zh_Hant_MO -> zh_Hant_HK + 914, 1167, // ff_Adlm -> root + 922, 1167, // ff_Arab -> root + 930, 1167, // ha_Arab -> root + 938, 371, // hi_Latn -> en_IN + 946, 1167, // iu_Latn -> root + 954, 1167, // kaa_Latn -> root + 963, 1167, // kk_Arab -> root + 971, 1167, // kok_Latn -> root + 980, 1167, // ks_Deva -> root + 988, 1167, // ku_Arab -> root + 996, 1167, // kxv_Deva -> root + 1005, 1167, // kxv_Orya -> root + 1014, 1167, // kxv_Telu -> root + 1023, 1167, // ky_Arab -> root + 1031, 1167, // ky_Latn -> root + 1039, 1167, // ml_Arab -> root + 1047, 1167, // mn_Mong -> root + 1055, 1167, // mni_Mtei -> root + 1064, 1167, // ms_Arab -> root + 1072, 1078, // nb -> no + 1075, 1078, // nn -> no + 1081, 1078, // no_NO -> no + 1087, 1167, // pa_Arab -> root + 1095, 1149, // pt_AO -> pt_PT + 1101, 1149, // pt_CH -> pt_PT + 1107, 1149, // pt_CV -> pt_PT + 1113, 1149, // pt_FR -> pt_PT + 1119, 1149, // pt_GQ -> pt_PT + 1125, 1149, // pt_GW -> pt_PT + 1131, 1149, // pt_LU -> pt_PT + 1137, 1149, // pt_MO -> pt_PT + 1143, 1149, // pt_MZ -> pt_PT + 1155, 1149, // pt_ST -> pt_PT + 1161, 1149, // pt_TL -> pt_PT + 1172, 1167, // sat_Deva -> root + 1181, 1167, // sd_Deva -> root + 1189, 1167, // sd_Khoj -> root + 1197, 1167, // sd_Sind -> root + 1205, 1167, // shi_Latn -> root + 1214, 1167, // so_Arab -> root + 1222, 1167, // sr_Latn -> root + 1230, 1167, // suz_Sunu -> root + 1239, 1167, // sw_Arab -> root + 1247, 1167, // tg_Arab -> root + 1255, 1167, // ug_Cyrl -> root + 1263, 1167, // uz_Arab -> root + 1271, 1167, // uz_Cyrl -> root + 1279, 1167, // vai_Latn -> root + 1288, 1167, // wo_Arab -> root + 1296, 1167, // yo_Arab -> root + 1304, 1167, // yue_Hans -> root + 1313, 1167, // zh_Hant -> root + 1332, 1321, // zh_Hant_MO -> zh_Hant_HK }; diff --git a/deps/icu-small/source/common/localematcher.cpp b/deps/icu-small/source/common/localematcher.cpp index 1e74dd1f1493..f9cd9354c5ec 100644 --- a/deps/icu-small/source/common/localematcher.cpp +++ b/deps/icu-small/source/common/localematcher.cpp @@ -72,7 +72,8 @@ LocaleMatcher::Result::~Result() { } } -LocaleMatcher::Result &LocaleMatcher::Result::operator=(LocaleMatcher::Result &&src) noexcept { +LocaleMatcher::Result& +LocaleMatcher::Result::operator=(LocaleMatcher::Result&& src) noexcept U_LIFETIME_BOUND { this->~Result(); desiredLocale = src.desiredLocale; @@ -144,7 +145,8 @@ LocaleMatcher::Builder::~Builder() { delete maxDistanceSupported_; } -LocaleMatcher::Builder &LocaleMatcher::Builder::operator=(LocaleMatcher::Builder &&src) noexcept { +LocaleMatcher::Builder& +LocaleMatcher::Builder::operator=(LocaleMatcher::Builder&& src) noexcept U_LIFETIME_BOUND { this->~Builder(); errorCode_ = src.errorCode_; @@ -176,8 +178,8 @@ bool LocaleMatcher::Builder::ensureSupportedLocaleVector() { return true; } -LocaleMatcher::Builder &LocaleMatcher::Builder::setSupportedLocalesFromListString( - StringPiece locales) { +LocaleMatcher::Builder& +LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece locales) U_LIFETIME_BOUND { LocalePriorityList list(locales, errorCode_); if (U_FAILURE(errorCode_)) { return *this; } clearSupportedLocales(); @@ -194,7 +196,8 @@ LocaleMatcher::Builder &LocaleMatcher::Builder::setSupportedLocalesFromListStrin return *this; } -LocaleMatcher::Builder &LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator &locales) { +LocaleMatcher::Builder& +LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator& locales) U_LIFETIME_BOUND { if (ensureSupportedLocaleVector()) { clearSupportedLocales(); while (locales.hasNext() && U_SUCCESS(errorCode_)) { @@ -206,7 +209,8 @@ LocaleMatcher::Builder &LocaleMatcher::Builder::setSupportedLocales(Locale::Iter return *this; } -LocaleMatcher::Builder &LocaleMatcher::Builder::addSupportedLocale(const Locale &locale) { +LocaleMatcher::Builder& +LocaleMatcher::Builder::addSupportedLocale(const Locale& locale) U_LIFETIME_BOUND { if (ensureSupportedLocaleVector()) { LocalPointer clone(locale.clone(), errorCode_); supportedLocales_->adoptElement(clone.orphan(), errorCode_); @@ -214,7 +218,7 @@ LocaleMatcher::Builder &LocaleMatcher::Builder::addSupportedLocale(const Locale return *this; } -LocaleMatcher::Builder &LocaleMatcher::Builder::setNoDefaultLocale() { +LocaleMatcher::Builder& LocaleMatcher::Builder::setNoDefaultLocale() U_LIFETIME_BOUND { if (U_FAILURE(errorCode_)) { return *this; } delete defaultLocale_; defaultLocale_ = nullptr; @@ -222,7 +226,8 @@ LocaleMatcher::Builder &LocaleMatcher::Builder::setNoDefaultLocale() { return *this; } -LocaleMatcher::Builder &LocaleMatcher::Builder::setDefaultLocale(const Locale *defaultLocale) { +LocaleMatcher::Builder& +LocaleMatcher::Builder::setDefaultLocale(const Locale* defaultLocale) U_LIFETIME_BOUND { if (U_FAILURE(errorCode_)) { return *this; } Locale *clone = nullptr; if (defaultLocale != nullptr) { @@ -238,20 +243,23 @@ LocaleMatcher::Builder &LocaleMatcher::Builder::setDefaultLocale(const Locale *d return *this; } -LocaleMatcher::Builder &LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag subtag) { +LocaleMatcher::Builder& +LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag subtag) U_LIFETIME_BOUND { if (U_FAILURE(errorCode_)) { return *this; } favor_ = subtag; return *this; } -LocaleMatcher::Builder &LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion demotion) { +LocaleMatcher::Builder& +LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion demotion) U_LIFETIME_BOUND { if (U_FAILURE(errorCode_)) { return *this; } demotion_ = demotion; return *this; } -LocaleMatcher::Builder &LocaleMatcher::Builder::setMaxDistance(const Locale &desired, - const Locale &supported) { +LocaleMatcher::Builder& +LocaleMatcher::Builder::setMaxDistance(const Locale& desired, + const Locale& supported) U_LIFETIME_BOUND { if (U_FAILURE(errorCode_)) { return *this; } Locale *desiredClone = desired.clone(); Locale *supportedClone = supported.clone(); @@ -522,7 +530,7 @@ LocaleMatcher::~LocaleMatcher() { delete ownedDefaultLocale; } -LocaleMatcher &LocaleMatcher::operator=(LocaleMatcher &&src) noexcept { +LocaleMatcher& LocaleMatcher::operator=(LocaleMatcher&& src) noexcept U_LIFETIME_BOUND { this->~LocaleMatcher(); thresholdDistance = src.thresholdDistance; @@ -605,7 +613,8 @@ class LocaleLsrIterator { int32_t bestDesiredIndex = -1; }; -const Locale *LocaleMatcher::getBestMatch(const Locale &desiredLocale, UErrorCode &errorCode) const { +const Locale* LocaleMatcher::getBestMatch(const Locale& desiredLocale, + UErrorCode& errorCode) const U_LIFETIME_BOUND { if (U_FAILURE(errorCode)) { return nullptr; } std::optional suppIndex = getBestSuppIndex( getMaximalLsrOrUnd(likelySubtags, desiredLocale, errorCode), @@ -614,8 +623,8 @@ const Locale *LocaleMatcher::getBestMatch(const Locale &desiredLocale, UErrorCod : defaultLocale; } -const Locale *LocaleMatcher::getBestMatch(Locale::Iterator &desiredLocales, - UErrorCode &errorCode) const { +const Locale* LocaleMatcher::getBestMatch(Locale::Iterator& desiredLocales, + UErrorCode& errorCode) const U_LIFETIME_BOUND { if (U_FAILURE(errorCode)) { return nullptr; } if (!desiredLocales.hasNext()) { return defaultLocale; @@ -626,16 +635,18 @@ const Locale *LocaleMatcher::getBestMatch(Locale::Iterator &desiredLocales, : defaultLocale; } -const Locale *LocaleMatcher::getBestMatchForListString( - StringPiece desiredLocaleList, UErrorCode &errorCode) const { +const Locale* +LocaleMatcher::getBestMatchForListString(StringPiece desiredLocaleList, + UErrorCode& errorCode) const U_LIFETIME_BOUND { if (U_FAILURE(errorCode)) { return nullptr; } LocalePriorityList list(desiredLocaleList, errorCode); LocalePriorityList::Iterator iter = list.iterator(); return getBestMatch(iter, errorCode); } -LocaleMatcher::Result LocaleMatcher::getBestMatchResult( - const Locale &desiredLocale, UErrorCode &errorCode) const { +LocaleMatcher::Result +LocaleMatcher::getBestMatchResult(const Locale& desiredLocale U_LIFETIME_BOUND, + UErrorCode& errorCode) const U_LIFETIME_BOUND { if (U_FAILURE(errorCode)) { return Result(nullptr, defaultLocale, -1, -1, false); } @@ -649,8 +660,9 @@ LocaleMatcher::Result LocaleMatcher::getBestMatchResult( } } -LocaleMatcher::Result LocaleMatcher::getBestMatchResult( - Locale::Iterator &desiredLocales, UErrorCode &errorCode) const { +LocaleMatcher::Result +LocaleMatcher::getBestMatchResult(Locale::Iterator& desiredLocales, + UErrorCode& errorCode) const U_LIFETIME_BOUND { if (U_FAILURE(errorCode) || !desiredLocales.hasNext()) { return Result(nullptr, defaultLocale, -1, -1, false); } @@ -749,7 +761,7 @@ namespace { class LocaleFromTag { public: LocaleFromTag() : locale(Locale::getRoot()) {} - const Locale &operator()(const char *tag) { return locale = Locale(tag); } + const Locale& operator()(const char* tag) U_LIFETIME_BOUND { return locale = Locale(tag); } private: // Store the locale in the converter, rather than return a reference to a temporary, diff --git a/deps/icu-small/source/common/locavailable.cpp b/deps/icu-small/source/common/locavailable.cpp index 4a2600e88c59..daf73e484ad8 100644 --- a/deps/icu-small/source/common/locavailable.cpp +++ b/deps/icu-small/source/common/locavailable.cpp @@ -137,7 +137,7 @@ class AvailableLocalesStringEnumeration : public StringEnumeration { AvailableLocalesStringEnumeration(ULocAvailableType type) : fType(type) { } - const char* next(int32_t *resultLength, UErrorCode &status) override { + const char* next(int32_t* resultLength, UErrorCode& status) U_LIFETIME_BOUND override { if (U_FAILURE(status)) { return nullptr; } ULocAvailableType actualType = fType; int32_t actualIndex = fIndex++; diff --git a/deps/icu-small/source/common/locbased.cpp b/deps/icu-small/source/common/locbased.cpp index b661cc462785..1d0d44214597 100644 --- a/deps/icu-small/source/common/locbased.cpp +++ b/deps/icu-small/source/common/locbased.cpp @@ -15,8 +15,10 @@ U_NAMESPACE_BEGIN -const Locale& LocaleBased::getLocale(const Locale& valid, const Locale& actual, - ULocDataLocaleType type, UErrorCode& status) { +const Locale& LocaleBased::getLocale(const Locale& valid U_LIFETIME_BOUND, + const Locale& actual U_LIFETIME_BOUND, + ULocDataLocaleType type, + UErrorCode& status) { if (U_FAILURE(status)) { return Locale::getRoot(); } diff --git a/deps/icu-small/source/common/locbased.h b/deps/icu-small/source/common/locbased.h index dbff148bcd08..e5ad15b0b957 100644 --- a/deps/icu-small/source/common/locbased.h +++ b/deps/icu-small/source/common/locbased.h @@ -40,8 +40,10 @@ class U_COMMON_API LocaleBased : public UMemory { * @return the indicated locale */ static const Locale& getLocale( - const Locale& valid, const Locale& actual, - ULocDataLocaleType type, UErrorCode& status); + const Locale& valid U_LIFETIME_BOUND, + const Locale& actual U_LIFETIME_BOUND, + ULocDataLocaleType type, + UErrorCode& status); /** * Return the locale ID for the service object wrapped by this diff --git a/deps/icu-small/source/common/locdispnames.cpp b/deps/icu-small/source/common/locdispnames.cpp index 3051798b78bc..46a529c79c95 100644 --- a/deps/icu-small/source/common/locdispnames.cpp +++ b/deps/icu-small/source/common/locdispnames.cpp @@ -42,7 +42,7 @@ U_NAMESPACE_BEGIN UnicodeString& -Locale::getDisplayLanguage(UnicodeString& dispLang) const +Locale::getDisplayLanguage(UnicodeString& dispLang U_LIFETIME_BOUND) const { return this->getDisplayLanguage(getDefault(), dispLang); } @@ -54,8 +54,8 @@ Locale::getDisplayLanguage(UnicodeString& dispLang) const * the exact buffer we need copy it to the UnicodeString and delete it*/ UnicodeString& -Locale::getDisplayLanguage(const Locale &displayLocale, - UnicodeString &result) const { +Locale::getDisplayLanguage(const Locale& displayLocale, + UnicodeString& result U_LIFETIME_BOUND) const { char16_t *buffer; UErrorCode errorCode=U_ZERO_ERROR; int32_t length; @@ -88,14 +88,14 @@ Locale::getDisplayLanguage(const Locale &displayLocale, } UnicodeString& -Locale::getDisplayScript(UnicodeString& dispScript) const +Locale::getDisplayScript(UnicodeString& dispScript U_LIFETIME_BOUND) const { return this->getDisplayScript(getDefault(), dispScript); } UnicodeString& -Locale::getDisplayScript(const Locale &displayLocale, - UnicodeString &result) const { +Locale::getDisplayScript(const Locale& displayLocale, + UnicodeString& result U_LIFETIME_BOUND) const { char16_t *buffer; UErrorCode errorCode=U_ZERO_ERROR; int32_t length; @@ -128,14 +128,14 @@ Locale::getDisplayScript(const Locale &displayLocale, } UnicodeString& -Locale::getDisplayCountry(UnicodeString& dispCntry) const +Locale::getDisplayCountry(UnicodeString& dispCntry U_LIFETIME_BOUND) const { return this->getDisplayCountry(getDefault(), dispCntry); } UnicodeString& -Locale::getDisplayCountry(const Locale &displayLocale, - UnicodeString &result) const { +Locale::getDisplayCountry(const Locale& displayLocale, + UnicodeString& result U_LIFETIME_BOUND) const { char16_t *buffer; UErrorCode errorCode=U_ZERO_ERROR; int32_t length; @@ -168,14 +168,14 @@ Locale::getDisplayCountry(const Locale &displayLocale, } UnicodeString& -Locale::getDisplayVariant(UnicodeString& dispVar) const +Locale::getDisplayVariant(UnicodeString& dispVar U_LIFETIME_BOUND) const { return this->getDisplayVariant(getDefault(), dispVar); } UnicodeString& -Locale::getDisplayVariant(const Locale &displayLocale, - UnicodeString &result) const { +Locale::getDisplayVariant(const Locale& displayLocale, + UnicodeString& result U_LIFETIME_BOUND) const { char16_t *buffer; UErrorCode errorCode=U_ZERO_ERROR; int32_t length; @@ -208,14 +208,14 @@ Locale::getDisplayVariant(const Locale &displayLocale, } UnicodeString& -Locale::getDisplayName( UnicodeString& name ) const +Locale::getDisplayName(UnicodeString& name U_LIFETIME_BOUND) const { return this->getDisplayName(getDefault(), name); } UnicodeString& -Locale::getDisplayName(const Locale &displayLocale, - UnicodeString &result) const { +Locale::getDisplayName(const Locale& displayLocale, + UnicodeString& result U_LIFETIME_BOUND) const { char16_t *buffer; UErrorCode errorCode=U_ZERO_ERROR; int32_t length; @@ -253,7 +253,7 @@ Locale::getDisplayName(const Locale &displayLocale, // Gets the objectLocale display name in the default locale language. UnicodeString& U_EXPORT2 BreakIterator::getDisplayName(const Locale& objectLocale, - UnicodeString& name) + UnicodeString& name U_LIFETIME_BOUND) { return objectLocale.getDisplayName(name); } @@ -262,8 +262,8 @@ BreakIterator::getDisplayName(const Locale& objectLocale, // Gets the objectLocale display name in the displayLocale language. UnicodeString& U_EXPORT2 BreakIterator::getDisplayName(const Locale& objectLocale, - const Locale& displayLocale, - UnicodeString& name) + const Locale& displayLocale, + UnicodeString& name U_LIFETIME_BOUND) { return objectLocale.getDisplayName(displayLocale, name); } diff --git a/deps/icu-small/source/common/locdspnm.cpp b/deps/icu-small/source/common/locdspnm.cpp index 270684341c5c..ae5acfd12233 100644 --- a/deps/icu-small/source/common/locdspnm.cpp +++ b/deps/icu-small/source/common/locdspnm.cpp @@ -44,26 +44,26 @@ class ICUDataTable { ICUDataTable(const char* path, const Locale& locale); ~ICUDataTable() = default; - const Locale& getLocale(); + const Locale& getLocale() U_LIFETIME_BOUND; UnicodeString& get(const char* tableKey, const char* itemKey, - UnicodeString& result) const; + UnicodeString& result U_LIFETIME_BOUND) const; UnicodeString& get(const char* tableKey, const char* subTableKey, const char* itemKey, - UnicodeString& result) const; + UnicodeString& result U_LIFETIME_BOUND) const; UnicodeString& getNoFallback(const char* tableKey, const char* itemKey, - UnicodeString &result) const; + UnicodeString& result U_LIFETIME_BOUND) const; UnicodeString& getNoFallback(const char* tableKey, const char* subTableKey, const char* itemKey, - UnicodeString &result) const; + UnicodeString& result U_LIFETIME_BOUND) const; }; -inline UnicodeString & -ICUDataTable::get(const char* tableKey, const char* itemKey, UnicodeString& result) const { +inline UnicodeString& ICUDataTable::get(const char* tableKey, const char* itemKey, + UnicodeString& result U_LIFETIME_BOUND) const { return get(tableKey, nullptr, itemKey, result); } -inline UnicodeString & -ICUDataTable::getNoFallback(const char* tableKey, const char* itemKey, UnicodeString& result) const { +inline UnicodeString& ICUDataTable::getNoFallback(const char* tableKey, const char* itemKey, + UnicodeString& result U_LIFETIME_BOUND) const { return getNoFallback(tableKey, nullptr, itemKey, result); } @@ -74,13 +74,13 @@ ICUDataTable::ICUDataTable(const char* path, const Locale& locale) } const Locale& -ICUDataTable::getLocale() { +ICUDataTable::getLocale() U_LIFETIME_BOUND { return locale; } -UnicodeString & +UnicodeString& ICUDataTable::get(const char* tableKey, const char* subTableKey, const char* itemKey, - UnicodeString &result) const { + UnicodeString &result U_LIFETIME_BOUND) const { UErrorCode status = U_ZERO_ERROR; int32_t len = 0; @@ -93,9 +93,9 @@ ICUDataTable::get(const char* tableKey, const char* subTableKey, const char* ite return result.setTo(UnicodeString(itemKey, -1, US_INV)); } -UnicodeString & +UnicodeString& ICUDataTable::getNoFallback(const char* tableKey, const char* subTableKey, const char* itemKey, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { UErrorCode status = U_ZERO_ERROR; int32_t len = 0; @@ -127,28 +127,28 @@ class DefaultLocaleDisplayNames : public LocaleDisplayNames { virtual ~DefaultLocaleDisplayNames(); - virtual const Locale& getLocale() const; + virtual const Locale& getLocale() const U_LIFETIME_BOUND; virtual UDialectHandling getDialectHandling() const; virtual UnicodeString& localeDisplayName(const Locale& locale, - UnicodeString& result) const; + UnicodeString& result U_LIFETIME_BOUND) const; virtual UnicodeString& localeDisplayName(const char* localeId, - UnicodeString& result) const; + UnicodeString& result U_LIFETIME_BOUND) const; virtual UnicodeString& languageDisplayName(const char* lang, - UnicodeString& result) const; + UnicodeString& result U_LIFETIME_BOUND) const; virtual UnicodeString& scriptDisplayName(const char* script, - UnicodeString& result) const; + UnicodeString& result U_LIFETIME_BOUND) const; virtual UnicodeString& scriptDisplayName(UScriptCode scriptCode, - UnicodeString& result) const; + UnicodeString& result U_LIFETIME_BOUND) const; virtual UnicodeString& regionDisplayName(const char* region, - UnicodeString& result) const; + UnicodeString& result U_LIFETIME_BOUND) const; virtual UnicodeString& variantDisplayName(const char* variant, - UnicodeString& result) const; + UnicodeString& result U_LIFETIME_BOUND) const; virtual UnicodeString& keyDisplayName(const char* key, - UnicodeString& result) const; + UnicodeString& result U_LIFETIME_BOUND) const; virtual UnicodeString& keyValueDisplayName(const char* key, const char* value, - UnicodeString& result) const; + UnicodeString& result U_LIFETIME_BOUND) const; }; DefaultLocaleDisplayNames::DefaultLocaleDisplayNames(UDialectHandling dialectHandling) @@ -159,7 +159,7 @@ DefaultLocaleDisplayNames::~DefaultLocaleDisplayNames() { } const Locale& -DefaultLocaleDisplayNames::getLocale() const { +DefaultLocaleDisplayNames::getLocale() const U_LIFETIME_BOUND { return Locale::getRoot(); } @@ -170,31 +170,31 @@ DefaultLocaleDisplayNames::getDialectHandling() const { UnicodeString& DefaultLocaleDisplayNames::localeDisplayName(const Locale& locale, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return result = UnicodeString(locale.getName(), -1, US_INV); } UnicodeString& DefaultLocaleDisplayNames::localeDisplayName(const char* localeId, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return result = UnicodeString(localeId, -1, US_INV); } UnicodeString& DefaultLocaleDisplayNames::languageDisplayName(const char* lang, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return result = UnicodeString(lang, -1, US_INV); } UnicodeString& DefaultLocaleDisplayNames::scriptDisplayName(const char* script, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return result = UnicodeString(script, -1, US_INV); } UnicodeString& DefaultLocaleDisplayNames::scriptDisplayName(UScriptCode scriptCode, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { const char* name = uscript_getName(scriptCode); if (name) { return result = UnicodeString(name, -1, US_INV); @@ -204,26 +204,26 @@ DefaultLocaleDisplayNames::scriptDisplayName(UScriptCode scriptCode, UnicodeString& DefaultLocaleDisplayNames::regionDisplayName(const char* region, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return result = UnicodeString(region, -1, US_INV); } UnicodeString& DefaultLocaleDisplayNames::variantDisplayName(const char* variant, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return result = UnicodeString(variant, -1, US_INV); } UnicodeString& DefaultLocaleDisplayNames::keyDisplayName(const char* key, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return result = UnicodeString(key, -1, US_INV); } UnicodeString& DefaultLocaleDisplayNames::keyValueDisplayName(const char* /* key */, const char* value, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return result = UnicodeString(value, -1, US_INV); } @@ -272,40 +272,48 @@ class LocaleDisplayNamesImpl : public LocaleDisplayNames { LocaleDisplayNamesImpl(const Locale& locale, UDisplayContext *contexts, int32_t length); virtual ~LocaleDisplayNamesImpl(); - virtual const Locale& getLocale() const override; + virtual const Locale& getLocale() const U_LIFETIME_BOUND override; virtual UDialectHandling getDialectHandling() const override; virtual UDisplayContext getContext(UDisplayContextType type) const override; virtual UnicodeString& localeDisplayName(const Locale& locale, - UnicodeString& result) const override; + UnicodeString& result U_LIFETIME_BOUND) const override; virtual UnicodeString& localeDisplayName(const char* localeId, - UnicodeString& result) const override; - virtual UnicodeString& languageDisplayName(const char* lang, - UnicodeString& result) const override; + UnicodeString& result U_LIFETIME_BOUND) const override; + virtual UnicodeString& + languageDisplayName(const char* lang, UnicodeString& result U_LIFETIME_BOUND) const override; virtual UnicodeString& scriptDisplayName(const char* script, - UnicodeString& result) const override; + UnicodeString& result U_LIFETIME_BOUND) const override; virtual UnicodeString& scriptDisplayName(UScriptCode scriptCode, - UnicodeString& result) const override; + UnicodeString& result U_LIFETIME_BOUND) const override; virtual UnicodeString& regionDisplayName(const char* region, - UnicodeString& result) const override; - virtual UnicodeString& variantDisplayName(const char* variant, - UnicodeString& result) const override; + UnicodeString& result U_LIFETIME_BOUND) const override; + virtual UnicodeString& + variantDisplayName(const char* variant, UnicodeString& result U_LIFETIME_BOUND) const override; virtual UnicodeString& keyDisplayName(const char* key, - UnicodeString& result) const override; - virtual UnicodeString& keyValueDisplayName(const char* key, - const char* value, - UnicodeString& result) const override; + UnicodeString& result U_LIFETIME_BOUND) const override; + virtual UnicodeString& + keyValueDisplayName(const char* key, const char* value, + UnicodeString& result U_LIFETIME_BOUND) const override; + private: - UnicodeString& localeIdName(const char* localeId, - UnicodeString& result, bool substitute) const; - UnicodeString& appendWithSep(UnicodeString& buffer, const UnicodeString& src) const; - UnicodeString& adjustForUsageAndContext(CapContextUsage usage, UnicodeString& result) const; - UnicodeString& scriptDisplayName(const char* script, UnicodeString& result, bool skipAdjust) const; - UnicodeString& regionDisplayName(const char* region, UnicodeString& result, bool skipAdjust) const; - UnicodeString& variantDisplayName(const char* variant, UnicodeString& result, bool skipAdjust) const; - UnicodeString& keyDisplayName(const char* key, UnicodeString& result, bool skipAdjust) const; + UnicodeString& localeIdName(const char* localeId, UnicodeString& result U_LIFETIME_BOUND, + bool substitute) const; + UnicodeString& appendWithSep(UnicodeString& buffer U_LIFETIME_BOUND, + const UnicodeString& src) const; + UnicodeString& adjustForUsageAndContext(CapContextUsage usage, + UnicodeString& result U_LIFETIME_BOUND) const; + UnicodeString& scriptDisplayName(const char* script, UnicodeString& result U_LIFETIME_BOUND, + bool skipAdjust) const; + UnicodeString& regionDisplayName(const char* region, UnicodeString& result U_LIFETIME_BOUND, + bool skipAdjust) const; + UnicodeString& variantDisplayName(const char* variant, UnicodeString& result U_LIFETIME_BOUND, + bool skipAdjust) const; + UnicodeString& keyDisplayName(const char* key, UnicodeString& result U_LIFETIME_BOUND, + bool skipAdjust) const; UnicodeString& keyValueDisplayName(const char* key, const char* value, - UnicodeString& result, bool skipAdjust) const; + UnicodeString& result U_LIFETIME_BOUND, + bool skipAdjust) const; void initialize(); struct CapitalizationContextSink; @@ -483,7 +491,7 @@ LocaleDisplayNamesImpl::~LocaleDisplayNamesImpl() { } const Locale& -LocaleDisplayNamesImpl::getLocale() const { +LocaleDisplayNamesImpl::getLocale() const U_LIFETIME_BOUND { return locale; } @@ -511,7 +519,7 @@ LocaleDisplayNamesImpl::getContext(UDisplayContextType type) const { UnicodeString& LocaleDisplayNamesImpl::adjustForUsageAndContext(CapContextUsage usage, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { #if !UCONFIG_NO_BREAK_ITERATION // check to see whether we need to titlecase result if ( result.length() > 0 && u_islower(result.char32At(0)) && capitalizationBrkIter!= nullptr && @@ -527,7 +535,7 @@ LocaleDisplayNamesImpl::adjustForUsageAndContext(CapContextUsage usage, UnicodeString& LocaleDisplayNamesImpl::localeDisplayName(const Locale& loc, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { if (loc.isBogus()) { result.setToBogus(); return result; @@ -669,7 +677,7 @@ LocaleDisplayNamesImpl::localeDisplayName(const Locale& loc, } UnicodeString& -LocaleDisplayNamesImpl::appendWithSep(UnicodeString& buffer, const UnicodeString& src) const { +LocaleDisplayNamesImpl::appendWithSep(UnicodeString& buffer U_LIFETIME_BOUND, const UnicodeString& src) const { if (buffer.isEmpty()) { buffer.setTo(src); } else { @@ -682,14 +690,14 @@ LocaleDisplayNamesImpl::appendWithSep(UnicodeString& buffer, const UnicodeString UnicodeString& LocaleDisplayNamesImpl::localeDisplayName(const char* localeId, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return localeDisplayName(Locale(localeId), result); } // private UnicodeString& LocaleDisplayNamesImpl::localeIdName(const char* localeId, - UnicodeString& result, bool substitute) const { + UnicodeString& result U_LIFETIME_BOUND, bool substitute) const { if (nameLength == UDISPCTX_LENGTH_SHORT) { langData.getNoFallback("Languages%short", localeId, result); if (!result.isBogus()) { @@ -719,7 +727,7 @@ LocaleDisplayNamesImpl::localeIdName(const char* localeId, UnicodeString& LocaleDisplayNamesImpl::languageDisplayName(const char* lang, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { if (uprv_strcmp("root", lang) == 0 || uprv_strchr(lang, '_') != nullptr) { return result = UnicodeString(lang, -1, US_INV); } @@ -751,7 +759,7 @@ LocaleDisplayNamesImpl::languageDisplayName(const char* lang, UnicodeString& LocaleDisplayNamesImpl::scriptDisplayName(const char* script, - UnicodeString& result, + UnicodeString& result U_LIFETIME_BOUND, bool skipAdjust) const { if (nameLength == UDISPCTX_LENGTH_SHORT) { langData.getNoFallback("Scripts%short", script, result); @@ -769,19 +777,19 @@ LocaleDisplayNamesImpl::scriptDisplayName(const char* script, UnicodeString& LocaleDisplayNamesImpl::scriptDisplayName(const char* script, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return scriptDisplayName(script, result, false); } UnicodeString& LocaleDisplayNamesImpl::scriptDisplayName(UScriptCode scriptCode, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return scriptDisplayName(uscript_getName(scriptCode), result, false); } UnicodeString& LocaleDisplayNamesImpl::regionDisplayName(const char* region, - UnicodeString& result, + UnicodeString& result U_LIFETIME_BOUND, bool skipAdjust) const { if (nameLength == UDISPCTX_LENGTH_SHORT) { regionData.getNoFallback("Countries%short", region, result); @@ -799,14 +807,14 @@ LocaleDisplayNamesImpl::regionDisplayName(const char* region, UnicodeString& LocaleDisplayNamesImpl::regionDisplayName(const char* region, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return regionDisplayName(region, result, false); } UnicodeString& LocaleDisplayNamesImpl::variantDisplayName(const char* variant, - UnicodeString& result, + UnicodeString& result U_LIFETIME_BOUND, bool skipAdjust) const { // don't have a resource for short variant names if (substitute == UDISPCTX_SUBSTITUTE) { @@ -819,13 +827,13 @@ LocaleDisplayNamesImpl::variantDisplayName(const char* variant, UnicodeString& LocaleDisplayNamesImpl::variantDisplayName(const char* variant, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return variantDisplayName(variant, result, false); } UnicodeString& LocaleDisplayNamesImpl::keyDisplayName(const char* key, - UnicodeString& result, + UnicodeString& result U_LIFETIME_BOUND, bool skipAdjust) const { // don't have a resource for short key names if (substitute == UDISPCTX_SUBSTITUTE) { @@ -838,14 +846,14 @@ LocaleDisplayNamesImpl::keyDisplayName(const char* key, UnicodeString& LocaleDisplayNamesImpl::keyDisplayName(const char* key, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return keyDisplayName(key, result, false); } UnicodeString& LocaleDisplayNamesImpl::keyValueDisplayName(const char* key, const char* value, - UnicodeString& result, + UnicodeString& result U_LIFETIME_BOUND, bool skipAdjust) const { if (uprv_strcmp(key, "currency") == 0) { // ICU4C does not have ICU4J CurrencyDisplayInfo equivalent for now. @@ -880,7 +888,7 @@ LocaleDisplayNamesImpl::keyValueDisplayName(const char* key, UnicodeString& LocaleDisplayNamesImpl::keyValueDisplayName(const char* key, const char* value, - UnicodeString& result) const { + UnicodeString& result U_LIFETIME_BOUND) const { return keyValueDisplayName(key, value, result, false); } @@ -939,8 +947,8 @@ uldn_close(ULocaleDisplayNames *ldn) { delete (LocaleDisplayNames *)ldn; } -U_CAPI const char * U_EXPORT2 -uldn_getLocale(const ULocaleDisplayNames *ldn) { +U_CAPI const char* U_EXPORT2 +uldn_getLocale(const ULocaleDisplayNames* ldn U_LIFETIME_BOUND) { if (ldn) { return ((const LocaleDisplayNames *)ldn)->getLocale().getName(); } diff --git a/deps/icu-small/source/common/locid.cpp b/deps/icu-small/source/common/locid.cpp index 34f1266f6069..942eb4c187ed 100644 --- a/deps/icu-small/source/common/locid.cpp +++ b/deps/icu-small/source/common/locid.cpp @@ -63,6 +63,10 @@ #include "ustr_imp.h" #include "uvector.h" +#if UPRV_HAS_FEATURE(memory_sanitizer) +#include +#endif + U_NAMESPACE_BEGIN static Locale *gLocaleCache = nullptr; @@ -272,6 +276,10 @@ Locale::Nest::Nest(Heap&& heap, uint8_t variantBegin) { static_assert(offsetof(Nest, region) <= offsetof(Heap, script)); static_assert(offsetof(Nest, variantBegin) <= offsetof(Heap, region)); U_ASSERT(this == reinterpret_cast(&heap)); +#if UPRV_HAS_FEATURE(memory_sanitizer) + // Tell the sanitizer that we know that this memory really is OK to access. + __msan_unpoison(&heap, sizeof(Heap)); +#endif copyToArray<&Nest::script>(heap.script, this); copyToArray<&Nest::region>(heap.region, this); this->variantBegin = variantBegin; @@ -283,9 +291,11 @@ struct Locale::Heap::Alloc : public UMemory { FixedString baseName; int32_t variantBegin; - const char* getVariant() const { return variantBegin == 0 ? "" : getBaseName() + variantBegin; } - const char* getFullName() const { return fullName.data(); } - const char* getBaseName() const { + const char* getVariant() const U_LIFETIME_BOUND { + return variantBegin == 0 ? "" : getBaseName() + variantBegin; + } + const char* getFullName() const U_LIFETIME_BOUND { return fullName.data(); } + const char* getBaseName() const U_LIFETIME_BOUND { if (baseName.isEmpty()) { if (const char* name = fullName.data(); *name != '@') { return name; @@ -321,9 +331,9 @@ struct Locale::Heap::Alloc : public UMemory { ~Alloc() = default; }; -const char* Locale::Heap::getVariant() const { return ptr->getVariant(); } -const char* Locale::Heap::getFullName() const { return ptr->getFullName(); } -const char* Locale::Heap::getBaseName() const { return ptr->getBaseName(); } +const char* Locale::Heap::getVariant() const U_LIFETIME_BOUND { return ptr->getVariant(); } +const char* Locale::Heap::getFullName() const U_LIFETIME_BOUND { return ptr->getFullName(); } +const char* Locale::Heap::getBaseName() const U_LIFETIME_BOUND { return ptr->getBaseName(); } Locale::Heap::Heap(std::string_view language, std::string_view script, @@ -345,7 +355,7 @@ Locale::Heap::~Heap() { delete ptr; } -Locale::Heap& Locale::Heap::operator=(const Heap& other) { +Locale::Heap& Locale::Heap::operator=(const Heap& other) U_LIFETIME_BOUND { U_ASSERT(type == eBOGUS); UErrorCode status = U_ZERO_ERROR; ptr = new Alloc(*other.ptr, status); @@ -360,7 +370,7 @@ Locale::Heap& Locale::Heap::operator=(const Heap& other) { return *this; } -Locale::Heap& Locale::Heap::operator=(Heap&& other) noexcept { +Locale::Heap& Locale::Heap::operator=(Heap&& other) noexcept U_LIFETIME_BOUND { U_ASSERT(type == eBOGUS); ptr = other.ptr; type = eHEAP; @@ -407,7 +417,7 @@ Locale::Payload::~Payload() { Locale::Payload::Payload(const Payload& other) : type{eBOGUS} { copy(other); } Locale::Payload::Payload(Payload&& other) noexcept : type{eBOGUS} { move(std::move(other)); } -Locale::Payload& Locale::Payload::operator=(const Payload& other) { +Locale::Payload& Locale::Payload::operator=(const Payload& other) U_LIFETIME_BOUND { if (this != &other) { setToBogus(); copy(other); @@ -415,7 +425,7 @@ Locale::Payload& Locale::Payload::operator=(const Payload& other) { return *this; } -Locale::Payload& Locale::Payload::operator=(Payload&& other) noexcept { +Locale::Payload& Locale::Payload::operator=(Payload&& other) noexcept U_LIFETIME_BOUND { if (this != &other) { setToBogus(); move(std::move(other)); @@ -428,7 +438,7 @@ void Locale::Payload::setToBogus() { type = eBOGUS; } -template T& Locale::Payload::emplace(Args&&... args) { +template T& Locale::Payload::emplace(Args&&... args) U_LIFETIME_BOUND { if constexpr (std::is_same_v) { this->~Payload(); ::new (&nest) Nest(std::forward(args)...); @@ -441,8 +451,12 @@ template T& Locale::Payload::emplace(Args&&... ar } } -template <> Locale::Nest* Locale::Payload::get() { return type == eNEST ? &nest : nullptr; } -template <> Locale::Heap* Locale::Payload::get() { return type == eHEAP ? &heap : nullptr; } +template <> Locale::Nest* Locale::Payload::get() U_LIFETIME_BOUND { + return type == eNEST ? &nest : nullptr; +} +template <> Locale::Heap* Locale::Payload::get() U_LIFETIME_BOUND { + return type == eHEAP ? &heap : nullptr; +} UOBJECT_DEFINE_RTTI_IMPLEMENTATION(Locale) @@ -586,8 +600,8 @@ Locale::Locale( const char * newLanguage, Locale::Locale(const Locale&) = default; Locale::Locale(Locale&&) noexcept = default; -Locale& Locale::operator=(const Locale&) = default; -Locale& Locale::operator=(Locale&&) noexcept = default; +Locale& Locale::operator=(const Locale&) U_LIFETIME_BOUND = default; +Locale& Locale::operator=(Locale&&) noexcept U_LIFETIME_BOUND = default; Locale * Locale::clone() const { @@ -749,11 +763,11 @@ class AliasData : public UMemory { return gSingleton; } - const CharStringMap& languageMap() const { return language; } - const CharStringMap& scriptMap() const { return script; } - const CharStringMap& territoryMap() const { return territory; } - const CharStringMap& variantMap() const { return variant; } - const CharStringMap& subdivisionMap() const { return subdivision; } + const CharStringMap& languageMap() const U_LIFETIME_BOUND { return language; } + const CharStringMap& scriptMap() const U_LIFETIME_BOUND { return script; } + const CharStringMap& territoryMap() const U_LIFETIME_BOUND { return territory; } + const CharStringMap& variantMap() const U_LIFETIME_BOUND { return variant; } + const CharStringMap& subdivisionMap() const U_LIFETIME_BOUND { return subdivision; } static void U_CALLCONV loadData(UErrorCode &status); static UBool U_CALLCONV cleanup(); @@ -1224,8 +1238,9 @@ class AliasReplacer { * nullptr || "" CCC nullptr CCC * nullptr || "" * DDD nullptr */ - inline const char* deleteOrReplace( - const char* input, const char* type, const char* replacement) { + inline const char* deleteOrReplace(const char* input U_LIFETIME_BOUND, + const char* type, + const char* replacement U_LIFETIME_BOUND) { return notEmpty(replacement) ? ((input == nullptr) ? replacement : input) : ((type == nullptr) ? input : nullptr); @@ -1243,11 +1258,11 @@ class AliasReplacer { } // Gather fields and generate locale ID into out. - CharString& outputToString(CharString& out, UErrorCode& status); + CharString& outputToString(CharString& out U_LIFETIME_BOUND, UErrorCode& status); // Generate the lookup key. CharString& generateKey(const char* language, const char* region, - const char* variant, CharString& out, + const char* variant, CharString& out U_LIFETIME_BOUND, UErrorCode& status); void parseLanguageReplacement(const char* replacement, @@ -1285,7 +1300,7 @@ class AliasReplacer { CharString& AliasReplacer::generateKey( const char* language, const char* region, const char* variant, - CharString& out, UErrorCode& status) + CharString& out U_LIFETIME_BOUND, UErrorCode& status) { if (U_FAILURE(status)) { return out; } out.append(language, status); @@ -1322,14 +1337,13 @@ AliasReplacer::parseLanguageReplacement( return; } // We have multiple field so we have to allocate and parse - CharString* str = - new CharString(replacement, static_cast(uprv_strlen(replacement)), status); - LocalPointer lpStr(str, status); - toBeFreed.adoptElement(lpStr.orphan(), status); + auto str = prv::make_unique( + replacement, static_cast(uprv_strlen(replacement)), status, status); + char* data = str->data(); + toBeFreed.adoptElement(str.release(), status); if (U_FAILURE(status)) { return; } - char* data = str->data(); replacedLanguage = (const char*) data; char* endOfField = uprv_strchr(data, '_'); *endOfField = '\0'; // null terminiate it. @@ -1515,7 +1529,7 @@ AliasReplacer::replaceTerritory(UVector& toBeFreed, UErrorCode& status) .build(status); l.addLikelySubtags(status); const char* likelyRegion = l.getCountry(); - LocalPointer item; + prv::unique_ptr item; if (likelyRegion != nullptr && uprv_strlen(likelyRegion) > 0) { size_t len = uprv_strlen(likelyRegion); const char* foundInReplacement = uprv_strstr(replacement, @@ -1527,18 +1541,17 @@ AliasReplacer::replaceTerritory(UVector& toBeFreed, UErrorCode& status) *(foundInReplacement-1) == ' '); U_ASSERT(foundInReplacement[len] == ' ' || foundInReplacement[len] == '\0'); - item.adoptInsteadAndCheckErrorCode( - new CharString(foundInReplacement, static_cast(len), status), status); + item = prv::make_unique( + foundInReplacement, static_cast(len), status, status); } } - if (item.isNull() && U_SUCCESS(status)) { - item.adoptInsteadAndCheckErrorCode( - new CharString(replacement, - static_cast(firstSpace - replacement), status), status); + if (!item && U_SUCCESS(status)) { + item = prv::make_unique( + replacement, static_cast(firstSpace - replacement), status, status); } if (U_FAILURE(status)) { return false; } replacedRegion = item->data(); - toBeFreed.adoptElement(item.orphan(), status); + toBeFreed.adoptElement(item.release(), status); if (U_FAILURE(status)) { return false; } } U_ASSERT(!same(region, replacedRegion)); @@ -1704,7 +1717,7 @@ AliasReplacer::replaceTransformedExtensions( CharString& AliasReplacer::outputToString( - CharString& out, UErrorCode& status) + CharString& out U_LIFETIME_BOUND, UErrorCode& status) { if (U_FAILURE(status)) { return out; } out.append(language, status); @@ -1948,13 +1961,13 @@ ulocimp_isCanonicalizedLocaleForTest(const char* localeName) U_NAMESPACE_BEGIN -Locale& Locale::init(const char* localeID, UBool canonicalize) +Locale& Locale::init(const char* localeID, UBool canonicalize) U_LIFETIME_BOUND { return localeID == nullptr ? *this = getDefault() : init(StringPiece{localeID}, canonicalize); } /*This function initializes a Locale from a C locale ID*/ -Locale& Locale::init(StringPiece localeID, UBool canonicalize) +Locale& Locale::init(StringPiece localeID, UBool canonicalize) U_LIFETIME_BOUND { /* Free our current storage */ Nest& nest = payload.emplace(); @@ -2579,7 +2592,7 @@ class KeywordEnumeration : public StringEnumeration { return result; } - virtual const char* next(int32_t* resultLength, UErrorCode& status) override { + virtual const char* next(int32_t* resultLength, UErrorCode& status) U_LIFETIME_BOUND override { const char* result; int32_t len; if(U_SUCCESS(status) && *current != 0) { @@ -2598,7 +2611,7 @@ class KeywordEnumeration : public StringEnumeration { return result; } - virtual const UnicodeString* snext(UErrorCode& status) override { + virtual const UnicodeString* snext(UErrorCode& status) U_LIFETIME_BOUND override { if (U_FAILURE(status)) { return nullptr; } int32_t resultLength = 0; const char *s = next(&resultLength, status); @@ -2623,7 +2636,7 @@ class UnicodeKeywordEnumeration : public KeywordEnumeration { using KeywordEnumeration::KeywordEnumeration; virtual ~UnicodeKeywordEnumeration(); - virtual const char* next(int32_t* resultLength, UErrorCode& status) override { + virtual const char* next(int32_t* resultLength, UErrorCode& status) U_LIFETIME_BOUND override { const char* legacy_key = KeywordEnumeration::next(nullptr, status); while (U_SUCCESS(status) && legacy_key != nullptr) { const char* key = uloc_toUnicodeLocaleKey(legacy_key); @@ -2877,38 +2890,38 @@ Locale::setUnicodeKeywordValue(StringPiece keywordName, } const char* -Locale::getCountry() const { +Locale::getCountry() const U_LIFETIME_BOUND { return getField<&Nest::getRegion, &Heap::getRegion>(); } const char* -Locale::getLanguage() const { +Locale::getLanguage() const U_LIFETIME_BOUND { return getField<&Nest::getLanguage, &Heap::getLanguage>(); } const char* -Locale::getScript() const { +Locale::getScript() const U_LIFETIME_BOUND { return getField<&Nest::getScript, &Heap::getScript>(); } const char* -Locale::getVariant() const { +Locale::getVariant() const U_LIFETIME_BOUND { return getField<&Nest::getVariant, &Heap::getVariant>(); } const char* -Locale::getName() const { +Locale::getName() const U_LIFETIME_BOUND { return getField<&Nest::getBaseName, &Heap::getFullName>(); } const char* -Locale::getBaseName() const { +Locale::getBaseName() const U_LIFETIME_BOUND { return getField<&Nest::getBaseName, &Heap::getBaseName>(); } template -const char* Locale::getField() const { +const char* Locale::getField() const U_LIFETIME_BOUND { return payload.visit([] { return ""; }, [](const Nest& nest) { return (nest.*NEST)(); }, [](const Heap& heap) { return (heap.*HEAP)(); }); diff --git a/deps/icu-small/source/common/loclikely.cpp b/deps/icu-small/source/common/loclikely.cpp index 1c9447fa2bf3..6b9318accfd1 100644 --- a/deps/icu-small/source/common/loclikely.cpp +++ b/deps/icu-small/source/common/loclikely.cpp @@ -418,7 +418,7 @@ GetRegionFromKey(const char* localeID, std::string_view key, UErrorCode& status) if (U_SUCCESS(status) && len >= 3 && len <= 6 && uprv_isASCIILetter(kw[0]) && uprv_isASCIILetter(kw[1])) { // Additional Check - static icu::RegionValidateMap valid; + icu::RegionValidateMap valid; const char region[] = {kw[0], kw[1], '\0'}; if (valid.isSet(region)) { result.append(uprv_toupper(kw[0]), status); diff --git a/deps/icu-small/source/common/loclikelysubtags.h b/deps/icu-small/source/common/loclikelysubtags.h index 5c51e353c1e7..2e7b1cb4f28d 100644 --- a/deps/icu-small/source/common/loclikelysubtags.h +++ b/deps/icu-small/source/common/loclikelysubtags.h @@ -68,7 +68,7 @@ class LikelySubtags final : public UMemory { UErrorCode &errorCode) const; // visible for LocaleDistance - const LocaleDistanceData &getDistanceData() const { return distanceData; } + const LocaleDistanceData& getDistanceData() const U_LIFETIME_BOUND { return distanceData; } private: LikelySubtags(LikelySubtagsData &data); diff --git a/deps/icu-small/source/common/locmap.cpp b/deps/icu-small/source/common/locmap.cpp index da78c7716a75..488a1c1da63a 100644 --- a/deps/icu-small/source/common/locmap.cpp +++ b/deps/icu-small/source/common/locmap.cpp @@ -1173,7 +1173,6 @@ uprv_convertToLCIDPlatform(const char* localeID, UErrorCode* status) // The purpose of this function is to leverage the Windows platform name->lcid // conversion functionality when available. #if U_PLATFORM_HAS_WIN32_API && UCONFIG_USE_WINDOWS_LCID_MAPPING_API - int32_t len; icu::CharString baseName; const char * mylocaleID = localeID; diff --git a/deps/icu-small/source/common/messageimpl.h b/deps/icu-small/source/common/messageimpl.h index 061df9189d53..695901c7762a 100644 --- a/deps/icu-small/source/common/messageimpl.h +++ b/deps/icu-small/source/common/messageimpl.h @@ -50,9 +50,9 @@ class U_COMMON_API MessageImpl { * Appends the sub-message to the result string. * Omits SKIP_SYNTAX and appends whole arguments using appendReducedApostrophes(). */ - static UnicodeString &appendSubMessageWithoutSkipSyntax(const MessagePattern &msgPattern, + static UnicodeString& appendSubMessageWithoutSkipSyntax(const MessagePattern& msgPattern, int32_t msgStart, - UnicodeString &result); + UnicodeString& result U_LIFETIME_BOUND); private: MessageImpl() = delete; // no constructor: all static methods diff --git a/deps/icu-small/source/common/messagepattern.cpp b/deps/icu-small/source/common/messagepattern.cpp index cd2976da164d..b5f945c59e71 100644 --- a/deps/icu-small/source/common/messagepattern.cpp +++ b/deps/icu-small/source/common/messagepattern.cpp @@ -195,8 +195,8 @@ MessagePattern::MessagePattern(const MessagePattern &other) } } -MessagePattern & -MessagePattern::operator=(const MessagePattern &other) { +MessagePattern& +MessagePattern::operator=(const MessagePattern& other) U_LIFETIME_BOUND { if(this==&other) { return *this; } @@ -264,35 +264,40 @@ MessagePattern::~MessagePattern() { // MessagePattern API ------------------------------------------------------ *** -MessagePattern & -MessagePattern::parse(const UnicodeString &pattern, UParseError *parseError, UErrorCode &errorCode) { +MessagePattern& +MessagePattern::parse(const UnicodeString& pattern, + UParseError* parseError, + UErrorCode& errorCode) U_LIFETIME_BOUND { preParse(pattern, parseError, errorCode); parseMessage(0, 0, 0, UMSGPAT_ARG_TYPE_NONE, parseError, errorCode); postParse(); return *this; } -MessagePattern & -MessagePattern::parseChoiceStyle(const UnicodeString &pattern, - UParseError *parseError, UErrorCode &errorCode) { +MessagePattern& +MessagePattern::parseChoiceStyle(const UnicodeString& pattern, + UParseError* parseError, + UErrorCode& errorCode) U_LIFETIME_BOUND { preParse(pattern, parseError, errorCode); parseChoiceStyle(0, 0, parseError, errorCode); postParse(); return *this; } -MessagePattern & -MessagePattern::parsePluralStyle(const UnicodeString &pattern, - UParseError *parseError, UErrorCode &errorCode) { +MessagePattern& +MessagePattern::parsePluralStyle(const UnicodeString& pattern, + UParseError* parseError, + UErrorCode& errorCode) U_LIFETIME_BOUND { preParse(pattern, parseError, errorCode); parsePluralOrSelectStyle(UMSGPAT_ARG_TYPE_PLURAL, 0, 0, parseError, errorCode); postParse(); return *this; } -MessagePattern & -MessagePattern::parseSelectStyle(const UnicodeString &pattern, - UParseError *parseError, UErrorCode &errorCode) { +MessagePattern& +MessagePattern::parseSelectStyle(const UnicodeString& pattern, + UParseError* parseError, + UErrorCode& errorCode) U_LIFETIME_BOUND { preParse(pattern, parseError, errorCode); parsePluralOrSelectStyle(UMSGPAT_ARG_TYPE_SELECT, 0, 0, parseError, errorCode); postParse(); @@ -1202,10 +1207,10 @@ MessageImpl::appendReducedApostrophes(const UnicodeString &s, int32_t start, int } // Ported from second half of ICU4J SelectFormat.format(String). -UnicodeString & -MessageImpl::appendSubMessageWithoutSkipSyntax(const MessagePattern &msgPattern, +UnicodeString& +MessageImpl::appendSubMessageWithoutSkipSyntax(const MessagePattern& msgPattern, int32_t msgStart, - UnicodeString &result) { + UnicodeString& result U_LIFETIME_BOUND) { const UnicodeString &msgString=msgPattern.getPatternString(); int32_t prevIndex=msgPattern.getPart(msgStart).getLimit(); for(int32_t i=msgStart;;) { diff --git a/deps/icu-small/source/common/norm2_nfc_data.h b/deps/icu-small/source/common/norm2_nfc_data.h index 562c2b2513e6..06332e211812 100644 --- a/deps/icu-small/source/common/norm2_nfc_data.h +++ b/deps/icu-small/source/common/norm2_nfc_data.h @@ -10,14 +10,14 @@ #ifdef INCLUDED_FROM_NORMALIZER2_CPP static const UVersionInfo norm2_nfc_data_formatVersion={5,0,0,0}; -static const UVersionInfo norm2_nfc_data_dataVersion={0x11,0,0,0}; +static const UVersionInfo norm2_nfc_data_dataVersion={0x12,0,0,0}; static const int32_t norm2_nfc_data_indexes[Normalizer2Impl::IX_COUNT]={ -0x58,0x4eec,0x8cc8,0x8dc8,0x8dc8,0x8dc8,0x8dc8,0x8dc8,0xc0,0x300,0xb0c,0x2a6a,0x3cf0,0xfbc4,0x12c2,0x3c26, +0x58,0x4f50,0x8d2c,0x8e2c,0x8e2c,0x8e2c,0x8e2c,0x8e2c,0xc0,0x300,0xb0c,0x2a6a,0x3cf0,0xfbc4,0x12c2,0x3c26, 0x3cbe,0x3cf0,0x300,0,0xfb10,0xfb9e }; -static const uint16_t norm2_nfc_data_trieIndex[1888]={ +static const uint16_t norm2_nfc_data_trieIndex[1891]={ 0,0x40,0x7b,0xbb,0xfb,0x13a,0x17a,0x1b2,0x1f2,0x226,0x254,0x226,0x294,0x2d4,0x313,0x353, 0x393,0x3d2,0x40f,0x44e,0x226,0x226,0x488,0x4c8,0x4f8,0x530,0x226,0x570,0x59f,0x5de,0x226,0x5f3, 0x631,0x65f,0x688,0x6be,0x6fe,0x73b,0x75b,0x79a,0x7d9,0x816,0x835,0x872,0x75b,0x8ab,0x8d9,0x918, @@ -82,7 +82,7 @@ static const uint16_t norm2_nfc_data_trieIndex[1888]={ 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x1881,0x18c1,0x1901,0x1941,0x1981,0x19c1,0x1a01,0x1a41,0x1a64,0x1aa4,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1ac4,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x6e2,0x6f2,0x70a,0x729,0x73e,0x73e,0x73e,0x742,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x6e5,0x6f5,0x70d,0x72c,0x741,0x741,0x741,0x745,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xc0c,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x54f,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x40c, @@ -91,54 +91,55 @@ static const uint16_t norm2_nfc_data_trieIndex[1888]={ 0x1b1a,0x226,0x226,0x1b2a,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xdf8,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x1b3a,0x226,0x226,0x226,0x1b42,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x1608,0x226,0x226,0x226,0x226,0x1b50,0x226,0x226,0x226,0x226,0x1b60,0x54f,0x226,0x226,0x1b70,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x81d,0x226,0x226,0x1b80,0x226,0x1b90,0x1b9d,0x1ba9,0x226,0x226, -0x226,0x226,0x414,0x226,0x1bb4,0x1bc4,0x226,0x226,0x226,0x812,0x226,0x226,0x226,0x226,0x1bd4,0x226, -0x226,0x226,0x1bdf,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1be6,0x226,0x226, -0x226,0x226,0x1bf1,0x1c00,0x928,0x1c0e,0x412,0x1c1c,0x1c2c,0x226,0x1c34,0x1c42,0x87f,0x226,0x226,0x226, -0x226,0x1c52,0x7ca,0x226,0x226,0x226,0x226,0x226,0x1c62,0x1c71,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x908,0x1c79,0x1c89,0x226,0x226,0x226,0x9ec,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x1c93,0x226,0x226,0x226,0x226,0x226,0x226,0x818,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1c90,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1ca3,0x812,0x226,0x226,0x226,0x226, +0x1608,0x226,0x1b50,0x226,0x226,0x1b60,0x226,0x226,0x226,0x226,0x1b70,0x54f,0x226,0x226,0x1b80,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x81d,0x226,0x226,0x1b90,0x226,0x1ba0,0x1bad,0x1bb9,0x226,0x226, +0x226,0x226,0x414,0x226,0x1bc4,0x1bd4,0x226,0x226,0x226,0x812,0x226,0x226,0x226,0x226,0x1be4,0x226, +0x226,0x226,0x1bef,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1bf6,0x226,0x226, +0x226,0x226,0x1c01,0x1c10,0x928,0x1c1e,0x412,0x1c2c,0x1c3c,0x226,0x1c44,0x1c52,0x87f,0x226,0x226,0x226, +0x226,0x1c62,0x7ca,0x226,0x226,0x226,0x226,0x226,0x1c72,0x1c81,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x908,0x1c89,0x1c99,0x226,0x226,0x226,0x9ec,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x1ca3,0x226,0x226,0x226,0x226,0x226,0x226,0x818,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1ca0,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1cb3,0x812,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x87f,0x226,0x226,0x226,0x81f,0x81c,0x226,0x226,0x226,0x226,0x81a, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x9ec,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xc06,0x226,0x226,0x226,0x226,0x81c,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0xc09,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x1cb2,0x1cc1,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x1cd1,0x226,0x226,0x226,0xf2d,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1cde, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x1cc2,0x1cd1,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x1ce1,0x226,0x226,0x226,0xf2d,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1cee, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1cf0,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x1cff,0x1d0f,0x1d1d,0x1d2a,0x226,0x1d36,0x1d44,0x1d54,0x226,0x226,0x226,0x226,0xd1c,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1cfe, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1d00,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0xb10,0x226,0x226,0x1d0f,0x1d1f,0x1d2d,0x1d3a,0x226,0x1d46,0x1d54,0x1d64,0x226,0x226,0x226,0x226,0xd1c, +0x1d74,0x226,0x226,0x1d83,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1d93,0x1d9b,0x1da9,0x226,0x226, +0x226,0x226,0x226,0x4f9,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xf2d,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x7ca,0x226,0x226,0x226,0x4fc, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1d64,0x1d6c,0x1d7a,0x226,0x226,0x226,0x226,0x226, -0x4f9,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xf2d,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x7ca,0x226,0x226,0x226,0x4fc,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1d85,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x5c1,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1d95,0x7d3,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1da5, -0x226,0x226,0x226,0x226,0x226,0x226,0x1db1,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x1dc1,0x1dd1,0x1de1,0x1df1,0x1e01,0x1e11,0x1e21,0x1e31,0x1e41,0x1e51,0x1e61,0x1e71,0x1e81,0x1e91, -0x1ea1,0x1eb1,0x1ec1,0x1ed1,0x1ee1,0x1ef1,0x1f01,0x1f11,0x1f21,0x1f31,0x1f41,0x1f51,0x1f61,0x1f71,0x1f81,0x1f91, -0x1fa1,0x1fb1,0x1fc1,0x1fd1,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x1db4,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x5c1,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x1dc4,0x7d3,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x1dd4,0x226,0x226,0x226,0x226,0x226,0x226,0x1de0,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x1df0,0x1e00,0x1e10,0x1e20,0x1e30,0x1e40,0x1e50,0x1e60,0x1e70,0x1e80,0x1e90, +0x1ea0,0x1eb0,0x1ec0,0x1ed0,0x1ee0,0x1ef0,0x1f00,0x1f10,0x1f20,0x1f30,0x1f40,0x1f50,0x1f60,0x1f70,0x1f80,0x1f90, +0x1fa0,0x1fb0,0x1fc0,0x1fd0,0x1fe0,0x1ff0,0x2000,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x408,0x428,0x440,0xc4,0xc4,0x460,0x46f,0x486,0x4a2,0x4bf,0x4dd,0x4fa,0x517,0x536, -0x553,0x56d,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, -0xc4,0xc4,0x582,0xc4,0xc4,0xc4,0xc4,0x595,0x5a9,0x5c0,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, +0x226,0x226,0x226,0x226,0x226,0x408,0x428,0x440,0xc4,0xc4,0x460,0x46f,0x486,0x4a2,0x4bf,0x4dd, +0x4fa,0x517,0x536,0x553,0x56d,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, +0xc4,0xc4,0xc4,0xc4,0xc4,0x582,0xc4,0xc4,0xc4,0xc4,0x595,0x5a9,0x5c0,0xc4,0xc4,0xc4, 0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, -0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x5e0,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, -0xc4,0x5eb,0x608,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x628,0x63e,0x650,0x66f,0x682,0xc4,0xc4, +0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x5e0,0xc4,0xc4,0xc4,0xc4, +0xc4,0xc4,0xc4,0xc4,0x5ee,0x60b,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x62b,0x641,0x653,0x672, +0x685,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, 0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, -0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x6a2,0x6c2 +0xc4,0x6a5,0x6c5 }; -static const uint16_t norm2_nfc_data_trieData[8162]={ +static const uint16_t norm2_nfc_data_trieData[8209]={ 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, @@ -216,7 +217,7 @@ static const uint16_t norm2_nfc_data_trieData[8162]={ 0xffcc,0xffcc,0xffbc,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8, 0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffbc,0xffc8,0xffcc,0xfe14,0xfe16,0xfe18,0xfe1a,0xfe1c,0xfe1e,0xfe20,0xfe22, 0xfe24,0xfe26,0xfe26,0xfe28,0xfe2a,0xfe2c,1,0xfe2e,1,0xfe30,0xfe32,1,0xffcc,0xffb8,1,0xfe24, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +0xfe14,0xfe2a,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,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, @@ -373,8 +374,8 @@ static const uint16_t norm2_nfc_data_trieData[8162]={ 1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8, 0xffb8,0xffcc,0xffcc,0xffb8,1,0xffb8,0xffcc,0xffcc,0xffb8,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8, 0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, -0xffcc,0xffcc,0xffb8,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc, -0xffd4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc, +0xffd4,0xffcc,0xffcc,0xffb8,0xffb8,0xffcc,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,0x8c4,0x1a65,0x8c8,0x1a6b,0x8cc,0x1a71,0x8d0,0x1a77,0x8d4,0x1a7d,1, 1,0x8d8,0x1a83,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, @@ -576,7 +577,8 @@ static const uint16_t norm2_nfc_data_trieData[8162]={ 1,1,1,1,1,1,1,0xffb8,1,0xffcc,1,1,1,1,1,1, 1,1,0xffcc,0xfe02,0xffb8,1,1,1,1,0xfe12,1,1,1,1,0xffcc,0xffcc, 0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, -1,1,1,1,1,1,1,1,1,1,0xffb8,0xffb8,1,0xffb8,0xffb8,0xffb8, +1,1,1,1,1,1,1,1,1,1,1,0xffcc,0xffb8,0xffb8,0xffcc,0xffcc, +0xffb8,0xffb8,0xffb8,0xffcc,0xffb8,0xffcc,0xffb8,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,1,0xffb8,0xffb8,0xffb8, 1,1,1,1,1,1,0xffb8,0xffb8,0xffcc,0xffcc,0xffcc,0xffb8,0xffcc,0xffb8,0xffb8,0xffb8, 1,1,0xffcc,0xffb8,0xffcc,0xffb8,1,1,1,1,1,1,1,1,1,1, 0xfe12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe12, @@ -609,53 +611,55 @@ static const uint16_t norm2_nfc_data_trieData[8162]={ 0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,1,1,1,1,1,1,1,1,1,1, 0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,0x3370, 0x337a,0x338e,0x33a6,0x33be,0x33d6,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,0xffcc,0xffcc,0xffcc,0xffcc, -0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,0xffcc,0xffcc,1, -0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1, -1,0xffd0,0xffd0,0xffb8,0xffcc,1,1,1,0xffcc,1,1,0xffcc,1,1,1,1, -1,1,1,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,1,1,1,1, -1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xfe0e,1,1,1,1, -1,0x33e5,0x33e9,0x33ed,0x33f1,0x33f7,0x2fd7,0x33fb,0x33ff,0x3403,0x3407,0x2fdb,0x340b,0x340f,0x3413,0x2fdf, -0x3419,0x341d,0x3421,0x3425,0x342b,0x342f,0x3433,0x3437,0x343d,0x3441,0x3445,0x3449,0x30c9,0x344d,0x3453,0x3457, -0x345b,0x345f,0x3463,0x3467,0x346b,0x346f,0x30dd,0x2fe3,0x2fe7,0x30e1,0x3473,0x3477,0x2ce3,0x347b,0x2feb,0x347f, -0x3483,0x3487,0x348b,0x348b,0x348b,0x348f,0x3495,0x3499,0x349d,0x34a1,0x34a7,0x34ab,0x34af,0x34b3,0x34b7,0x34bb, -0x34bf,0x34c3,0x34c7,0x34cb,0x34cf,0x34d3,0x34d7,0x34d7,0x30e9,0x34db,0x34df,0x34e3,0x34e7,0x2ff3,0x34eb,0x34ef, -0x34f3,0x2f47,0x34f7,0x34fb,0x34ff,0x3503,0x3507,0x350b,0x350f,0x3513,0x3517,0x351d,0x3521,0x3525,0x3529,0x352d, -0x3531,0x3535,0x353b,0x3541,0x3545,0x3549,0x354d,0x3551,0x3555,0x3559,0x355d,0x3561,0x3561,0x3565,0x356b,0x356f, -0x2cd3,0x3573,0x3577,0x357d,0x3581,0x3585,0x3589,0x358d,0x3591,0x3007,0x3595,0x3599,0x359d,0x35a3,0x35a7,0x35ad, -0x35b1,0x35b5,0x35b9,0x35bd,0x35c1,0x35c5,0x35c9,0x35cd,0x35d1,0x35d5,0x35d9,0x35df,0x35e3,0x35e7,0x35eb,0x2bfb, -0x35ef,0x35f5,0x35f9,0x35f9,0x35ff,0x3603,0x3603,0x3607,0x360b,0x3611,0x3617,0x361b,0x361f,0x3623,0x3627,0x362b, -0x362f,0x3633,0x3637,0x363b,0x300b,0x363f,0x3645,0x3649,0x364d,0x3119,0x364d,0x3651,0x3013,0x3655,0x3659,0x365d, -0x3661,0x3017,0x2b8f,0x3665,0x3669,0x366d,0x3671,0x3675,0x3679,0x367d,0x3683,0x3687,0x368b,0x368f,0x3693,0x3697, -0x369d,0x36a1,0x36a5,0x36a9,0x36ad,0x36b1,0x36b5,0x36b9,0x36bd,0x301b,0x36c1,0x36c5,0x36cb,0x36cf,0x36d3,0x36d7, -0x3023,0x36db,0x36df,0x36e3,0x36e7,0x36eb,0x36ef,0x36f3,0x36f7,0x2bff,0x3139,0x36fb,0x36ff,0x3703,0x3707,0x370d, -0x3711,0x3715,0x3719,0x3027,0x371d,0x3723,0x3727,0x372b,0x31eb,0x372f,0x3733,0x3737,0x373b,0x373f,0x3745,0x3749, -0x374d,0x3751,0x3757,0x375b,0x375f,0x3763,0x2d17,0x3767,0x376b,0x3771,0x3777,0x377d,0x3781,0x3787,0x378b,0x378f, -0x3793,0x3797,0x302b,0x2e73,0x379b,0x379f,0x37a3,0x37a7,0x37ad,0x37b1,0x37b5,0x37b9,0x3149,0x37bd,0x37c1,0x37c7, -0x37cb,0x37cf,0x37d5,0x37db,0x37df,0x314d,0x37e3,0x37e7,0x37eb,0x37ef,0x37f3,0x37f7,0x37fb,0x3801,0x3805,0x380b, -0x380f,0x3815,0x3155,0x3819,0x381d,0x3823,0x3827,0x382b,0x3831,0x3837,0x383b,0x383f,0x3843,0x3847,0x3847,0x384b, -0x384f,0x315d,0x3853,0x3857,0x385b,0x385f,0x3863,0x3869,0x386d,0x2cdf,0x3873,0x3879,0x387d,0x3883,0x3889,0x388f, -0x3893,0x3175,0x3897,0x389d,0x38a3,0x38a9,0x38af,0x38b3,0x38b3,0x3179,0x31f3,0x38b7,0x38bb,0x38bf,0x38c3,0x38c9, -0x2c47,0x3181,0x38cd,0x38d1,0x3057,0x38d7,0x38dd,0x2f9f,0x38e3,0x38e7,0x3067,0x38eb,0x38ef,0x38f3,0x38f9,0x38f9, -0x38ff,0x3903,0x3907,0x390d,0x3911,0x3915,0x3919,0x391f,0x3923,0x3927,0x392b,0x392f,0x3933,0x3939,0x393d,0x3941, -0x3945,0x3949,0x394d,0x3951,0x3957,0x395d,0x3961,0x3967,0x396b,0x3971,0x3975,0x307f,0x3979,0x397f,0x3985,0x3989, -0x398f,0x3993,0x3999,0x399d,0x39a1,0x39a5,0x39a9,0x39ad,0x39b1,0x39b7,0x39bd,0x39c3,0x35ff,0x39c9,0x39cd,0x39d1, -0x39d5,0x39d9,0x39dd,0x39e1,0x39e5,0x39e9,0x39ed,0x39f1,0x39f5,0x2d27,0x39fb,0x39ff,0x3a03,0x3a07,0x3a0b,0x3a0f, -0x308b,0x3a13,0x3a17,0x3a1b,0x3a1f,0x3a23,0x3a29,0x3a2f,0x3a35,0x3a39,0x3a3d,0x3a41,0x3a45,0x3a4b,0x3a4f,0x3a55, -0x3a59,0x3a5d,0x3a63,0x3a69,0x3a6d,0x2c33,0x3a71,0x3a75,0x3a79,0x3a7d,0x3a81,0x3a85,0x319d,0x3a89,0x3a8d,0x3a91, -0x3a95,0x3a99,0x3a9d,0x3aa1,0x3aa5,0x3aa9,0x3aad,0x3ab3,0x3ab7,0x3abb,0x3abf,0x3ac3,0x3ac7,0x3acd,0x3ad3,0x3ad7, -0x3adb,0x31b1,0x31b5,0x3adf,0x3ae3,0x3ae9,0x3aed,0x3af1,0x3af5,0x3af9,0x3aff,0x3b05,0x3b09,0x3b0d,0x3b11,0x3b17, -0x31b9,0x3b1b,0x3b21,0x3b27,0x3b2b,0x3b2f,0x3b33,0x3b39,0x3b3d,0x3b41,0x3b45,0x3b49,0x3b4d,0x3b51,0x3b55,0x3b5b, -0x3b5f,0x3b63,0x3b67,0x3b6d,0x3b71,0x3b75,0x3b79,0x3b7d,0x3b83,0x3b89,0x3b8d,0x3b91,0x3b95,0x3b9b,0x3b9f,0x31d1, -0x31d1,0x3ba5,0x3ba9,0x3baf,0x3bb3,0x3bb7,0x3bbb,0x3bbf,0x3bc3,0x3bc7,0x3bcb,0x31d5,0x3bd1,0x3bd5,0x3bd9,0x3bdd, -0x3be1,0x3be5,0x3beb,0x3bef,0x3bf5,0x3bfb,0x3c01,0x3c05,0x3c09,0x3c0d,0x3c11,0x3c15,0x3c19,0x3c1d,0x3c21,1, -1,1 +1,1,1,1,0xffb0,0xffb0,0xffb0,1,1,1,1,1,1,1,1,0xfe02, +0xfe02,1,1,0xffb0,0xffb0,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, +0xffcc,0xffcc,0xffcc,0xffcc,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,0xffcc,0xffcc,1,0xffcc, +0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1, +0xffd0,0xffd0,0xffb8,0xffcc,1,1,1,0xffcc,1,1,0xffcc,1,1,1,1,1, +1,1,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,1,1,1,1,1, +1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xfe0e,1,1,1,1,1, +0x33e5,0x33e9,0x33ed,0x33f1,0x33f7,0x2fd7,0x33fb,0x33ff,0x3403,0x3407,0x2fdb,0x340b,0x340f,0x3413,0x2fdf,0x3419, +0x341d,0x3421,0x3425,0x342b,0x342f,0x3433,0x3437,0x343d,0x3441,0x3445,0x3449,0x30c9,0x344d,0x3453,0x3457,0x345b, +0x345f,0x3463,0x3467,0x346b,0x346f,0x30dd,0x2fe3,0x2fe7,0x30e1,0x3473,0x3477,0x2ce3,0x347b,0x2feb,0x347f,0x3483, +0x3487,0x348b,0x348b,0x348b,0x348f,0x3495,0x3499,0x349d,0x34a1,0x34a7,0x34ab,0x34af,0x34b3,0x34b7,0x34bb,0x34bf, +0x34c3,0x34c7,0x34cb,0x34cf,0x34d3,0x34d7,0x34d7,0x30e9,0x34db,0x34df,0x34e3,0x34e7,0x2ff3,0x34eb,0x34ef,0x34f3, +0x2f47,0x34f7,0x34fb,0x34ff,0x3503,0x3507,0x350b,0x350f,0x3513,0x3517,0x351d,0x3521,0x3525,0x3529,0x352d,0x3531, +0x3535,0x353b,0x3541,0x3545,0x3549,0x354d,0x3551,0x3555,0x3559,0x355d,0x3561,0x3561,0x3565,0x356b,0x356f,0x2cd3, +0x3573,0x3577,0x357d,0x3581,0x3585,0x3589,0x358d,0x3591,0x3007,0x3595,0x3599,0x359d,0x35a3,0x35a7,0x35ad,0x35b1, +0x35b5,0x35b9,0x35bd,0x35c1,0x35c5,0x35c9,0x35cd,0x35d1,0x35d5,0x35d9,0x35df,0x35e3,0x35e7,0x35eb,0x2bfb,0x35ef, +0x35f5,0x35f9,0x35f9,0x35ff,0x3603,0x3603,0x3607,0x360b,0x3611,0x3617,0x361b,0x361f,0x3623,0x3627,0x362b,0x362f, +0x3633,0x3637,0x363b,0x300b,0x363f,0x3645,0x3649,0x364d,0x3119,0x364d,0x3651,0x3013,0x3655,0x3659,0x365d,0x3661, +0x3017,0x2b8f,0x3665,0x3669,0x366d,0x3671,0x3675,0x3679,0x367d,0x3683,0x3687,0x368b,0x368f,0x3693,0x3697,0x369d, +0x36a1,0x36a5,0x36a9,0x36ad,0x36b1,0x36b5,0x36b9,0x36bd,0x301b,0x36c1,0x36c5,0x36cb,0x36cf,0x36d3,0x36d7,0x3023, +0x36db,0x36df,0x36e3,0x36e7,0x36eb,0x36ef,0x36f3,0x36f7,0x2bff,0x3139,0x36fb,0x36ff,0x3703,0x3707,0x370d,0x3711, +0x3715,0x3719,0x3027,0x371d,0x3723,0x3727,0x372b,0x31eb,0x372f,0x3733,0x3737,0x373b,0x373f,0x3745,0x3749,0x374d, +0x3751,0x3757,0x375b,0x375f,0x3763,0x2d17,0x3767,0x376b,0x3771,0x3777,0x377d,0x3781,0x3787,0x378b,0x378f,0x3793, +0x3797,0x302b,0x2e73,0x379b,0x379f,0x37a3,0x37a7,0x37ad,0x37b1,0x37b5,0x37b9,0x3149,0x37bd,0x37c1,0x37c7,0x37cb, +0x37cf,0x37d5,0x37db,0x37df,0x314d,0x37e3,0x37e7,0x37eb,0x37ef,0x37f3,0x37f7,0x37fb,0x3801,0x3805,0x380b,0x380f, +0x3815,0x3155,0x3819,0x381d,0x3823,0x3827,0x382b,0x3831,0x3837,0x383b,0x383f,0x3843,0x3847,0x3847,0x384b,0x384f, +0x315d,0x3853,0x3857,0x385b,0x385f,0x3863,0x3869,0x386d,0x2cdf,0x3873,0x3879,0x387d,0x3883,0x3889,0x388f,0x3893, +0x3175,0x3897,0x389d,0x38a3,0x38a9,0x38af,0x38b3,0x38b3,0x3179,0x31f3,0x38b7,0x38bb,0x38bf,0x38c3,0x38c9,0x2c47, +0x3181,0x38cd,0x38d1,0x3057,0x38d7,0x38dd,0x2f9f,0x38e3,0x38e7,0x3067,0x38eb,0x38ef,0x38f3,0x38f9,0x38f9,0x38ff, +0x3903,0x3907,0x390d,0x3911,0x3915,0x3919,0x391f,0x3923,0x3927,0x392b,0x392f,0x3933,0x3939,0x393d,0x3941,0x3945, +0x3949,0x394d,0x3951,0x3957,0x395d,0x3961,0x3967,0x396b,0x3971,0x3975,0x307f,0x3979,0x397f,0x3985,0x3989,0x398f, +0x3993,0x3999,0x399d,0x39a1,0x39a5,0x39a9,0x39ad,0x39b1,0x39b7,0x39bd,0x39c3,0x35ff,0x39c9,0x39cd,0x39d1,0x39d5, +0x39d9,0x39dd,0x39e1,0x39e5,0x39e9,0x39ed,0x39f1,0x39f5,0x2d27,0x39fb,0x39ff,0x3a03,0x3a07,0x3a0b,0x3a0f,0x308b, +0x3a13,0x3a17,0x3a1b,0x3a1f,0x3a23,0x3a29,0x3a2f,0x3a35,0x3a39,0x3a3d,0x3a41,0x3a45,0x3a4b,0x3a4f,0x3a55,0x3a59, +0x3a5d,0x3a63,0x3a69,0x3a6d,0x2c33,0x3a71,0x3a75,0x3a79,0x3a7d,0x3a81,0x3a85,0x319d,0x3a89,0x3a8d,0x3a91,0x3a95, +0x3a99,0x3a9d,0x3aa1,0x3aa5,0x3aa9,0x3aad,0x3ab3,0x3ab7,0x3abb,0x3abf,0x3ac3,0x3ac7,0x3acd,0x3ad3,0x3ad7,0x3adb, +0x31b1,0x31b5,0x3adf,0x3ae3,0x3ae9,0x3aed,0x3af1,0x3af5,0x3af9,0x3aff,0x3b05,0x3b09,0x3b0d,0x3b11,0x3b17,0x31b9, +0x3b1b,0x3b21,0x3b27,0x3b2b,0x3b2f,0x3b33,0x3b39,0x3b3d,0x3b41,0x3b45,0x3b49,0x3b4d,0x3b51,0x3b55,0x3b5b,0x3b5f, +0x3b63,0x3b67,0x3b6d,0x3b71,0x3b75,0x3b79,0x3b7d,0x3b83,0x3b89,0x3b8d,0x3b91,0x3b95,0x3b9b,0x3b9f,0x31d1,0x31d1, +0x3ba5,0x3ba9,0x3baf,0x3bb3,0x3bb7,0x3bbb,0x3bbf,0x3bc3,0x3bc7,0x3bcb,0x31d5,0x3bd1,0x3bd5,0x3bd9,0x3bdd,0x3be1, +0x3be5,0x3beb,0x3bef,0x3bf5,0x3bfb,0x3c01,0x3c05,0x3c09,0x3c0d,0x3c11,0x3c15,0x3c19,0x3c1d,0x3c21,1,1, +1 }; static const UCPTrie norm2_nfc_data_trie={ norm2_nfc_data_trieIndex, { norm2_nfc_data_trieData }, - 1888, 8162, + 1891, 8209, 0x2fc00, 0x30, 0, 0, 0, 0, diff --git a/deps/icu-small/source/common/norm2allmodes.h b/deps/icu-small/source/common/norm2allmodes.h index 4b30d787e87c..8d5e944f9bde 100644 --- a/deps/icu-small/source/common/norm2allmodes.h +++ b/deps/icu-small/source/common/norm2allmodes.h @@ -24,6 +24,7 @@ #include "unicode/unistr.h" #include "cpputils.h" #include "normalizer2impl.h" +#include "putilimp.h" U_NAMESPACE_BEGIN @@ -35,10 +36,10 @@ class Normalizer2WithImpl : public Normalizer2 { virtual ~Normalizer2WithImpl(); // normalize - virtual UnicodeString & - normalize(const UnicodeString &src, - UnicodeString &dest, - UErrorCode &errorCode) const override { + virtual UnicodeString& + normalize(const UnicodeString& src, + UnicodeString& dest U_LIFETIME_BOUND, + UErrorCode& errorCode) const override { if(U_FAILURE(errorCode)) { dest.setToBogus(); return dest; @@ -61,23 +62,23 @@ class Normalizer2WithImpl : public Normalizer2 { ReorderingBuffer &buffer, UErrorCode &errorCode) const = 0; // normalize and append - virtual UnicodeString & - normalizeSecondAndAppend(UnicodeString &first, - const UnicodeString &second, - UErrorCode &errorCode) const override { + virtual UnicodeString& + normalizeSecondAndAppend(UnicodeString& first U_LIFETIME_BOUND, + const UnicodeString& second, + UErrorCode& errorCode) const override { return normalizeSecondAndAppend(first, second, true, errorCode); } - virtual UnicodeString & - append(UnicodeString &first, - const UnicodeString &second, - UErrorCode &errorCode) const override { + virtual UnicodeString& + append(UnicodeString& first U_LIFETIME_BOUND, + const UnicodeString& second, + UErrorCode& errorCode) const override { return normalizeSecondAndAppend(first, second, false, errorCode); } - UnicodeString & - normalizeSecondAndAppend(UnicodeString &first, - const UnicodeString &second, + UnicodeString& + normalizeSecondAndAppend(UnicodeString& first U_LIFETIME_BOUND, + const UnicodeString& second, UBool doNormalize, - UErrorCode &errorCode) const { + UErrorCode& errorCode) const { uprv_checkCanGetBuffer(first, errorCode); if(U_FAILURE(errorCode)) { return first; @@ -90,8 +91,14 @@ class Normalizer2WithImpl : public Normalizer2 { int32_t firstLength=first.length(); UnicodeString safeMiddle; { + int32_t destCapacity; + if(uprv_add32_overflow(firstLength, second.length(), &destCapacity)) { + first.setToBogus(); + errorCode=U_MEMORY_ALLOCATION_ERROR; + return first; + } ReorderingBuffer buffer(impl, first); - if(buffer.init(firstLength+second.length(), errorCode)) { + if(buffer.init(destCapacity, errorCode)) { normalizeAndAppend(secondArray, secondArray+second.length(), doNormalize, safeMiddle, buffer, errorCode); } @@ -176,8 +183,10 @@ class Normalizer2WithImpl : public Normalizer2 { } return static_cast(spanQuickCheckYes(sArray, sArray + s.length(), errorCode) - sArray); } - virtual const char16_t * - spanQuickCheckYes(const char16_t *src, const char16_t *limit, UErrorCode &errorCode) const = 0; + virtual const char16_t* + spanQuickCheckYes(const char16_t* src U_LIFETIME_BOUND, + const char16_t* limit, + UErrorCode& errorCode) const = 0; virtual UNormalizationCheckResult getQuickCheck(UChar32) const { return UNORM_YES; @@ -228,8 +237,10 @@ class DecomposeNormalizer2 : public Normalizer2WithImpl { return sLimit == impl.decomposeUTF8(0, s, sLimit, nullptr, nullptr, errorCode); } - virtual const char16_t * - spanQuickCheckYes(const char16_t *src, const char16_t *limit, UErrorCode &errorCode) const override { + virtual const char16_t* + spanQuickCheckYes(const char16_t* src U_LIFETIME_BOUND, + const char16_t* limit, + UErrorCode& errorCode) const override { return impl.decompose(src, limit, nullptr, errorCode); } using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. @@ -322,8 +333,10 @@ class ComposeNormalizer2 : public Normalizer2WithImpl { impl.composeQuickCheck(sArray, sArray+s.length(), onlyContiguous, &qcResult); return qcResult; } - virtual const char16_t * - spanQuickCheckYes(const char16_t *src, const char16_t *limit, UErrorCode &) const override { + virtual const char16_t* + spanQuickCheckYes(const char16_t* src U_LIFETIME_BOUND, + const char16_t* limit, + UErrorCode&) const override { return impl.composeQuickCheck(src, limit, onlyContiguous, nullptr); } using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. @@ -361,8 +374,10 @@ class FCDNormalizer2 : public Normalizer2WithImpl { ReorderingBuffer &buffer, UErrorCode &errorCode) const override { impl.makeFCDAndAppend(src, limit, doNormalize, safeMiddle, buffer, errorCode); } - virtual const char16_t * - spanQuickCheckYes(const char16_t *src, const char16_t *limit, UErrorCode &errorCode) const override { + virtual const char16_t* + spanQuickCheckYes(const char16_t* src U_LIFETIME_BOUND, + const char16_t* limit, + UErrorCode& errorCode) const override { return impl.makeFCD(src, limit, nullptr, errorCode); } using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. diff --git a/deps/icu-small/source/common/normalizer2.cpp b/deps/icu-small/source/common/normalizer2.cpp index dad3df4edee2..6d510f142512 100644 --- a/deps/icu-small/source/common/normalizer2.cpp +++ b/deps/icu-small/source/common/normalizer2.cpp @@ -29,6 +29,7 @@ #include "mutex.h" #include "norm2allmodes.h" #include "normalizer2impl.h" +#include "putilimp.h" #include "uassert.h" #include "ucln_cmn.h" @@ -84,10 +85,10 @@ Normalizer2::isNormalizedUTF8(StringPiece s, UErrorCode &errorCode) const { class NoopNormalizer2 : public Normalizer2 { virtual ~NoopNormalizer2(); - virtual UnicodeString & - normalize(const UnicodeString &src, - UnicodeString &dest, - UErrorCode &errorCode) const override { + virtual UnicodeString& + normalize(const UnicodeString& src, + UnicodeString& dest U_LIFETIME_BOUND, + UErrorCode& errorCode) const override { if(U_SUCCESS(errorCode)) { if(&dest!=&src) { dest=src; @@ -114,10 +115,10 @@ class NoopNormalizer2 : public Normalizer2 { } } - virtual UnicodeString & - normalizeSecondAndAppend(UnicodeString &first, - const UnicodeString &second, - UErrorCode &errorCode) const override { + virtual UnicodeString& + normalizeSecondAndAppend(UnicodeString& first U_LIFETIME_BOUND, + const UnicodeString& second, + UErrorCode& errorCode) const override { if(U_SUCCESS(errorCode)) { if(&first!=&second) { first.append(second); @@ -127,10 +128,10 @@ class NoopNormalizer2 : public Normalizer2 { } return first; } - virtual UnicodeString & - append(UnicodeString &first, - const UnicodeString &second, - UErrorCode &errorCode) const override { + virtual UnicodeString& + append(UnicodeString& first U_LIFETIME_BOUND, + const UnicodeString& second, + UErrorCode& errorCode) const override { if(U_SUCCESS(errorCode)) { if(&first!=&second) { first.append(second); @@ -203,8 +204,8 @@ const Normalizer2 *Normalizer2Factory::getNoopInstance(UErrorCode &errorCode) { return noopSingleton; } -const Normalizer2Impl * -Normalizer2Factory::getImpl(const Normalizer2 *norm2) { +const Normalizer2Impl* +Normalizer2Factory::getImpl(const Normalizer2* norm2 U_LIFETIME_BOUND) { return &((Normalizer2WithImpl *)norm2)->impl; } @@ -386,8 +387,13 @@ normalizeSecondAndAppend(const UNormalizer2 *norm2, // Avoid duplicate argument checking and support NUL-terminated src. UnicodeString safeMiddle; { + int32_t destCapacity; ReorderingBuffer buffer(n2wi->impl, firstString); - if(buffer.init(firstLength+secondLength+1, *pErrorCode)) { // destCapacity>=-1 + if(uprv_add32_overflow(firstLength, secondLength, &destCapacity) || + uprv_add32_overflow(destCapacity, 1, &destCapacity)) { + firstString.setToBogus(); + *pErrorCode=U_MEMORY_ALLOCATION_ERROR; + } else if(buffer.init(destCapacity, *pErrorCode)) { // destCapacity>=-1 n2wi->normalizeAndAppend(second, secondLength>=0 ? second+secondLength : nullptr, doNormalize, safeMiddle, buffer, *pErrorCode); } diff --git a/deps/icu-small/source/common/normalizer2impl.cpp b/deps/icu-small/source/common/normalizer2impl.cpp index 758a84c11069..12c6f9dea8af 100644 --- a/deps/icu-small/source/common/normalizer2impl.cpp +++ b/deps/icu-small/source/common/normalizer2impl.cpp @@ -353,9 +353,16 @@ UBool ReorderingBuffer::resize(int32_t appendLength, UErrorCode &errorCode) { int32_t reorderStartIndex = static_cast(reorderStart - start); int32_t length = static_cast(limit - start); str.releaseBuffer(length); - int32_t newCapacity=length+appendLength; - int32_t doubleCapacity=2*str.getCapacity(); - if(newCapacitydefaultTZFilePtr == nullptr) { - tzInfo->defaultTZFilePtr = fopen(defaultTZFileName, "r"); - } + U_ASSERT(tzInfo->defaultTZFilePtr != nullptr); file = fopen(TZFileName, "r"); tzInfo->defaultTZPosition = 0; /* reset position to begin search */ - if (file != nullptr && tzInfo->defaultTZFilePtr != nullptr) { + if (file != nullptr) { /* First check that the file size are equal. */ if (tzInfo->defaultTZFileSize == 0) { fseek(tzInfo->defaultTZFilePtr, 0, SEEK_END); tzInfo->defaultTZFileSize = ftell(tzInfo->defaultTZFilePtr); } - fseek(file, 0, SEEK_END); + if (fseek(file, 0, SEEK_END) != 0) { + fclose(file); + return false; + } sizeFile = ftell(file); + if (sizeFile == -1) { + fclose(file); + return false; + } sizeFileLeft = sizeFile; if (sizeFile != tzInfo->defaultTZFileSize) { @@ -926,16 +930,26 @@ static UBool compareBinaryFiles(const char* defaultTZFileName, const char* TZFil * compare each byte to determine equality. */ if (tzInfo->defaultTZBuffer == nullptr) { - rewind(tzInfo->defaultTZFilePtr); + if (fseek(tzInfo->defaultTZFilePtr, 0, SEEK_SET) != 0) { + fclose(file); + return false; + } tzInfo->defaultTZBuffer = static_cast(uprv_malloc(sizeof(char) * tzInfo->defaultTZFileSize)); sizeFileRead = fread(tzInfo->defaultTZBuffer, 1, tzInfo->defaultTZFileSize, tzInfo->defaultTZFilePtr); } - rewind(file); + if (fseek(file, 0, SEEK_SET) != 0) { + fclose(file); + return false; + } while(sizeFileLeft > 0) { uprv_memset(bufferFile, 0, MAX_READ_SIZE); sizeFileToRead = sizeFileLeft < MAX_READ_SIZE ? sizeFileLeft : MAX_READ_SIZE; sizeFileRead = fread(bufferFile, 1, sizeFileToRead, file); + if (sizeFileRead == -1) { + fclose(file); + return false; + } if (memcmp(tzInfo->defaultTZBuffer + tzInfo->defaultTZPosition, bufferFile, sizeFileRead) != 0) { result = false; break; @@ -972,6 +986,11 @@ static char* searchForTZFile(const char* path, DefaultTZInfo* tzInfo) { char* result = nullptr; UErrorCode status = U_ZERO_ERROR; + /* There is no reference file to compare against, so do not traverse the zoneinfo tree. */ + if (tzInfo->defaultTZFilePtr == nullptr) { + return nullptr; + } + /* Save the current path */ CharString curpath(path, -1, status); if (U_FAILURE(status)) { @@ -1023,7 +1042,7 @@ static char* searchForTZFile(const char* path, DefaultTZInfo* tzInfo) { if (result != nullptr) break; } else { - if(compareBinaryFiles(TZDEFAULT, newpath.data(), tzInfo)) { + if(compareBinaryFiles(newpath.data(), tzInfo)) { int32_t amountToSkip = sizeof(TZZONEINFO) - 1; if (amountToSkip > newpath.length()) { amountToSkip = newpath.length(); @@ -1198,8 +1217,7 @@ uprv_tzname(int n) if (tzInfo != nullptr) { tzInfo->defaultTZBuffer = nullptr; tzInfo->defaultTZFileSize = 0; - tzInfo->defaultTZFilePtr = nullptr; - tzInfo->defaultTZstatus = false; + tzInfo->defaultTZFilePtr = fopen(TZDEFAULT, "r"); tzInfo->defaultTZPosition = 0; gTimeZoneBufferPtr = searchForTZFile(TZZONEINFO, tzInfo); @@ -1430,9 +1448,6 @@ static void U_CALLCONV dataDirectoryInitFn() { } const char *path = nullptr; -#if defined(ICU_DATA_DIR_PREFIX_ENV_VAR) - char datadir_path_buffer[PATH_MAX]; -#endif /* When ICU_NO_USER_DATA_OVERRIDE is defined, users aren't allowed to @@ -1462,6 +1477,9 @@ static void U_CALLCONV dataDirectoryInitFn() { * set their own path. */ #if defined(ICU_DATA_DIR) || defined(U_ICU_DATA_DEFAULT_DIR) +# if defined(ICU_DATA_DIR_PREFIX_ENV_VAR) + char datadir_path_buffer[PATH_MAX]; +# endif if(path==nullptr || *path==0) { # if defined(ICU_DATA_DIR_PREFIX_ENV_VAR) const char *prefix = getenv(ICU_DATA_DIR_PREFIX_ENV_VAR); diff --git a/deps/icu-small/source/common/putilimp.h b/deps/icu-small/source/common/putilimp.h index 8a8ff5008118..03f588a1a7a3 100644 --- a/deps/icu-small/source/common/putilimp.h +++ b/deps/icu-small/source/common/putilimp.h @@ -107,6 +107,8 @@ typedef size_t uintptr_t; /* not defined */ #elif U_PLATFORM == U_PF_HAIKU /* not defined */ +#elif defined(__wasi__) + /* not defined */ #else # define U_TZSET tzset #endif @@ -132,6 +134,8 @@ typedef size_t uintptr_t; /* not defined */ #elif U_PLATFORM == U_PF_IPHONE /* not defined */ +#elif defined(__wasi__) + /* not defined */ #else # define U_TIMEZONE timezone #endif @@ -147,6 +151,8 @@ typedef size_t uintptr_t; /* not defined */ #elif U_PLATFORM == U_PF_HAIKU /* not defined, (well it is but a loop back to icu) */ +#elif defined(__wasi__) + /* not defined */ #else # define U_TZNAME tzname #endif diff --git a/deps/icu-small/source/common/rbbi.cpp b/deps/icu-small/source/common/rbbi.cpp index 069af2153711..37fa28b158c7 100644 --- a/deps/icu-small/source/common/rbbi.cpp +++ b/deps/icu-small/source/common/rbbi.cpp @@ -277,7 +277,7 @@ RuleBasedBreakIterator::~RuleBasedBreakIterator() { * TODO: needs better handling of memory allocation errors. */ RuleBasedBreakIterator& -RuleBasedBreakIterator::operator=(const RuleBasedBreakIterator& that) { +RuleBasedBreakIterator::operator=(const RuleBasedBreakIterator& that) U_LIFETIME_BOUND { if (this == &that) { return *this; } @@ -326,6 +326,7 @@ RuleBasedBreakIterator::operator=(const RuleBasedBreakIterator& that) { fPosition = that.fPosition; fRuleStatusIndex = that.fRuleStatusIndex; fDone = that.fDone; + fIsPhraseBreaking = that.fIsPhraseBreaking; // TODO: both the dictionary and the main cache need to be copied. // Current position could be within a dictionary range. Trying to continue @@ -377,7 +378,8 @@ RuleBasedBreakIterator::operator==(const BreakIterator& that) const { if (!(fPosition == that2.fPosition && fRuleStatusIndex == that2.fRuleStatusIndex && - fDone == that2.fDone)) { + fDone == that2.fDone && + fIsPhraseBreaking == that2.fIsPhraseBreaking)) { return false; } @@ -429,7 +431,7 @@ void RuleBasedBreakIterator::setText(UText *ut, UErrorCode &status) { } -UText *RuleBasedBreakIterator::getUText(UText *fillIn, UErrorCode &status) const { +UText* RuleBasedBreakIterator::getUText(UText* fillIn U_LIFETIME_BOUND, UErrorCode& status) const { UText *result = utext_clone(fillIn, &fText, false, true, &status); return result; } @@ -443,7 +445,7 @@ UText *RuleBasedBreakIterator::getUText(UText *fillIn, UErrorCode &status) const * Return a CharacterIterator over the text being analyzed. */ CharacterIterator& -RuleBasedBreakIterator::getText() const { +RuleBasedBreakIterator::getText() const U_LIFETIME_BOUND { return *fCharIter; } @@ -508,7 +510,8 @@ RuleBasedBreakIterator::setText(const UnicodeString& newText) { * Intended for use with text data originating in Java (garbage collected) environments * where the data may be moved in memory at arbitrary times. */ -RuleBasedBreakIterator &RuleBasedBreakIterator::refreshInputText(UText *input, UErrorCode &status) { +RuleBasedBreakIterator& +RuleBasedBreakIterator::refreshInputText(UText* input, UErrorCode& status) U_LIFETIME_BOUND { if (U_FAILURE(status)) { return *this; } @@ -820,10 +823,6 @@ int32_t RuleBasedBreakIterator::handleNext() { mode = RBBI_RUN; - if (statetable->fFlags & RBBI_BOF_REQUIRED) { - category = 2; - mode = RBBI_START; - } // loop until we reach the end of the text or transition to state 0 @@ -1086,7 +1085,7 @@ int32_t RuleBasedBreakIterator::getRuleStatusVec( // for standard iterator types. // //------------------------------------------------------------------------------- -const uint8_t *RuleBasedBreakIterator::getBinaryRules(uint32_t &length) { +const uint8_t* RuleBasedBreakIterator::getBinaryRules(uint32_t& length) U_LIFETIME_BOUND { const uint8_t *retPtr = nullptr; length = 0; @@ -1203,8 +1202,8 @@ getLanguageBreakEngineFromFactory(UChar32 c, const char* locale) // the character c. // //------------------------------------------------------------------------------- -const LanguageBreakEngine * -RuleBasedBreakIterator::getLanguageBreakEngine(UChar32 c, const char* locale) { +const LanguageBreakEngine* +RuleBasedBreakIterator::getLanguageBreakEngine(UChar32 c, const char* locale) U_LIFETIME_BOUND { const LanguageBreakEngine *lbe = nullptr; UErrorCode status = U_ZERO_ERROR; @@ -1289,7 +1288,7 @@ void RuleBasedBreakIterator::dumpTables() { */ const UnicodeString& -RuleBasedBreakIterator::getRules() const { +RuleBasedBreakIterator::getRules() const U_LIFETIME_BOUND { if (fData != nullptr) { return fData->getRuleSourceString(); } else { diff --git a/deps/icu-small/source/common/rbbi_cache.cpp b/deps/icu-small/source/common/rbbi_cache.cpp index 3ef030cb9195..da4121210d66 100644 --- a/deps/icu-small/source/common/rbbi_cache.cpp +++ b/deps/icu-small/source/common/rbbi_cache.cpp @@ -40,6 +40,11 @@ void RuleBasedBreakIterator::DictionaryCache::reset() { fFirstRuleStatusIndex = 0; fOtherRuleStatusIndex = 0; fBreaks.removeAllElements(); + int32_t maxStatus = 0; + for (int32_t i = 0; i < fBI->fData->fStatusMaxIdx; ++i) { + maxStatus = std::max(maxStatus, fBI->fData->fRuleStatusTable[i]); + } + isWordLike = maxStatus > 100; } UBool RuleBasedBreakIterator::DictionaryCache::following(int32_t fromPos, int32_t *result, int32_t *statusIndex) { @@ -60,7 +65,7 @@ UBool RuleBasedBreakIterator::DictionaryCache::following(int32_t fromPos, int32_ r = fBreaks.elementAti(fPositionInCache); U_ASSERT(r > fromPos); *result = r; - *statusIndex = fOtherRuleStatusIndex; + *statusIndex = isWordLike || r == fLimit ? fOtherRuleStatusIndex : 0; return true; } @@ -70,7 +75,7 @@ UBool RuleBasedBreakIterator::DictionaryCache::following(int32_t fromPos, int32_ r= fBreaks.elementAti(fPositionInCache); if (r > fromPos) { *result = r; - *statusIndex = fOtherRuleStatusIndex; + *statusIndex = isWordLike || r == fLimit ? fOtherRuleStatusIndex : 0; return true; } } @@ -97,7 +102,9 @@ UBool RuleBasedBreakIterator::DictionaryCache::preceding(int32_t fromPos, int32_ r = fBreaks.elementAti(fPositionInCache); U_ASSERT(r < fromPos); *result = r; - *statusIndex = ( r== fStart) ? fFirstRuleStatusIndex : fOtherRuleStatusIndex; + *statusIndex = (r == fStart) ? fFirstRuleStatusIndex + : isWordLike ? fOtherRuleStatusIndex + : 0; return true; } @@ -110,7 +117,9 @@ UBool RuleBasedBreakIterator::DictionaryCache::preceding(int32_t fromPos, int32_ r = fBreaks.elementAti(fPositionInCache); if (r < fromPos) { *result = r; - *statusIndex = ( r == fStart) ? fFirstRuleStatusIndex : fOtherRuleStatusIndex; + *statusIndex = (r == fStart) ? fFirstRuleStatusIndex + : isWordLike ? fOtherRuleStatusIndex + : 0; return true; } } diff --git a/deps/icu-small/source/common/rbbi_cache.h b/deps/icu-small/source/common/rbbi_cache.h index 597312e85c45..8ce8b4f21a67 100644 --- a/deps/icu-small/source/common/rbbi_cache.h +++ b/deps/icu-small/source/common/rbbi_cache.h @@ -64,6 +64,13 @@ class RuleBasedBreakIterator::DictionaryCache: public UMemory { // text segment being handled by the dictionary. int32_t fFirstRuleStatusIndex; // Rule status info for first boundary. int32_t fOtherRuleStatusIndex; // Rule status info for 2nd through last boundaries. + + // If `this->isWordLike`, the status of dictionary breaks is equal to the status of the final + // break of the rule-based segment they refine (fOtherRuleStatusIndex); otherwise, dictionary + // breaks have status 0. + // For compatibility, this property is determined by the largest status value used by `*fBI`: + // rules that have a largest status greater than 100 are considered word-like. + bool isWordLike; }; diff --git a/deps/icu-small/source/common/rbbidata.cpp b/deps/icu-small/source/common/rbbidata.cpp index edfa1bf0d85e..c99cd9ae85eb 100644 --- a/deps/icu-small/source/common/rbbidata.cpp +++ b/deps/icu-small/source/common/rbbidata.cpp @@ -234,10 +234,9 @@ void RBBIDataWrapper::printTable(const char *heading, const RBBIStateTable *tab RBBIDebugPrintf(" fDictCategoriesStart: %d\n", table->fDictCategoriesStart); RBBIDebugPrintf(" fLookAheadResultsSize: %d\n", table->fLookAheadResultsSize); - RBBIDebugPrintf(" Flags: %4x RBBI_LOOKAHEAD_HARD_BREAK=%s RBBI_BOF_REQUIRED=%s RBBI_8BITS_ROWS=%s\n", + RBBIDebugPrintf(" Flags: %4x RBBI_LOOKAHEAD_HARD_BREAK=%s RBBI_8BITS_ROWS=%s\n", table->fFlags, table->fFlags & RBBI_LOOKAHEAD_HARD_BREAK ? "T" : "F", - table->fFlags & RBBI_BOF_REQUIRED ? "T" : "F", table->fFlags & RBBI_8BITS_ROWS ? "T" : "F"); RBBIDebugPrintf("\nState | Acc LA TagIx"); for (c=0; cfCatCount; c++) {RBBIDebugPrintf("%3d ", c);} diff --git a/deps/icu-small/source/common/rbbidata.h b/deps/icu-small/source/common/rbbidata.h index 75c1be504560..c264a4156ce6 100644 --- a/deps/icu-small/source/common/rbbidata.h +++ b/deps/icu-small/source/common/rbbidata.h @@ -59,7 +59,7 @@ ubrk_swap(const UDataSwapper *ds, U_NAMESPACE_BEGIN // The current RBBI data format version. -static const uint8_t RBBI_DATA_FORMAT_VERSION[] = {6, 0, 0, 0}; +static const uint8_t RBBI_DATA_FORMAT_VERSION[] = {7, 0, 0, 0}; /* * The following structs map exactly onto the raw data from ICU common data file. @@ -148,7 +148,8 @@ struct RBBIStateTable { }; constexpr uint32_t RBBI_LOOKAHEAD_HARD_BREAK = 1; -constexpr uint32_t RBBI_BOF_REQUIRED = 2; +// No longer used since ICU 79: +// constexpr uint32_t RBBI_BOF_REQUIRED = 2; constexpr uint32_t RBBI_8BITS_ROWS = 4; diff --git a/deps/icu-small/source/common/rbbirb.cpp b/deps/icu-small/source/common/rbbirb.cpp index 4fd789970cc0..56b742ee5c63 100644 --- a/deps/icu-small/source/common/rbbirb.cpp +++ b/deps/icu-small/source/common/rbbirb.cpp @@ -337,13 +337,15 @@ RBBIDataHeader *RBBIRuleBuilder::build(UErrorCode &status) { void RBBIRuleBuilder::optimizeTables() { bool didSomething; + fForwardTable->minimizeLookaheads(); do { didSomething = false; // Begin looking for duplicates with char class 3. - // Classes 0, 1 and 2 are special; they are unused, {bof} and {eof} respectively, - // and should not have other categories merged into them. - IntPair duplPair = {3, 0}; + // Class 0 is unused and should not have other categories merged into + // it. We allow merging categories *into* class 1 {eof} (but not the + // reverse, so that eof remains in class 1). + IntPair duplPair = {1, 0}; while (fForwardTable->findDuplCharClassFrom(&duplPair)) { fSetBuilder->mergeCategories(duplPair); fForwardTable->removeColumn(duplPair.second); diff --git a/deps/icu-small/source/common/rbbirb.h b/deps/icu-small/source/common/rbbirb.h index 96d3aa643dd1..1dd1ea43523d 100644 --- a/deps/icu-small/source/common/rbbirb.h +++ b/deps/icu-small/source/common/rbbirb.h @@ -65,15 +65,10 @@ class RBBISymbolTable : public UMemory, public SymbolTable { UHashtable *fHashTable; RBBIRuleScanner *fRuleScanner; - // These next two fields are part of the mechanism for passing references to - // already-constructed UnicodeSets back to the UnicodeSet constructor - // when the pattern includes $variable references. - const UnicodeString ffffString; // = "/uffff" - UnicodeSet *fCachedSetLookup; - public: // API inherited from class SymbolTable virtual const UnicodeString* lookup(const UnicodeString& s) const override; + virtual const UnicodeSet* lookupSet(const UnicodeString& s) const override; virtual const UnicodeFunctor* lookupMatcher(UChar32 ch) const override; virtual UnicodeString parseReference(const UnicodeString& text, ParsePosition& pos, int32_t limit) const override; @@ -91,7 +86,7 @@ class RBBISymbolTable : public UMemory, public SymbolTable { // A do-nothing inline function for non-debug builds. Member funcs can't be empty // or the call sites won't compile. int32_t fFakeField; - #define rbbiSymtablePrint() fFakeField=0; + #define rbbiSymtablePrint() fFakeField=0; #endif private: @@ -220,7 +215,7 @@ typedef std::pair IntPair; #define RBBIDebugPrintf printf #define RBBIDebugPuts puts #else -#undef RBBIDebugPrintf +#undef RBBIDebugPrintf #define RBBIDebugPuts(arg) #endif diff --git a/deps/icu-small/source/common/rbbiscan.cpp b/deps/icu-small/source/common/rbbiscan.cpp index d3aa32fd6ed7..0ae80cb6fcd6 100644 --- a/deps/icu-small/source/common/rbbiscan.cpp +++ b/deps/icu-small/source/common/rbbiscan.cpp @@ -1258,7 +1258,7 @@ void RBBIRuleScanner::scanSet() { // Use tempSet to handle the case that the UnicodeSet contains // only string element, such as [{ab}] and treat it as empty set. tempSet.removeAllStrings(); - if (tempSet.isEmpty()) { + if (tempSet.isEmpty() && !uset->contains(UnicodeString::readOnlyAlias(u"eof"))) { // This set is empty. // Make it an error, because it almost certainly is not what the user wanted. // Also, avoids having to think about corner cases in the tree manipulation code diff --git a/deps/icu-small/source/common/rbbisetb.cpp b/deps/icu-small/source/common/rbbisetb.cpp index b6e9f745e4f1..5580ede56b84 100644 --- a/deps/icu-small/source/common/rbbisetb.cpp +++ b/deps/icu-small/source/common/rbbisetb.cpp @@ -60,7 +60,6 @@ RBBISetBuilder::RBBISetBuilder(RBBIRuleBuilder *rb) fTrie = nullptr; fTrieSize = 0; fGroupCount = 0; - fSawBOF = false; } @@ -240,16 +239,12 @@ void RBBISetBuilder::buildRanges() { // Handle input sets that contain the special string {eof}. // Column 1 of the state table is reserved for EOF on input. - // Column 2 is reserved for before-the-start-input. - // (This column can be optimized away later if there are no rule - // references to {bof}.) - // Add this column value (1 or 2) to the equivalent expression + // Add this column value (1) to the equivalent expression // subtree for each UnicodeSet that contains the string {eof} - // Because {bof} and {eof} are not characters in the normal sense, - // they don't affect the computation of the ranges or TRIE. + // Because {eof} is not a character in the normal sense, + // it doesn’t affect the computation of ranges or TRIE. UnicodeString eofString(u"eof"); - UnicodeString bofString(u"bof"); for (ni=0; ; ni++) { // Loop over each of the UnicodeSets encountered in the input rules usetNode = static_cast(this->fRB->fUSetNodes->elementAt(ni)); if (usetNode==nullptr) { @@ -259,10 +254,6 @@ void RBBISetBuilder::buildRanges() { if (inputSet->contains(eofString)) { addValToSet(usetNode, 1); } - if (inputSet->contains(bofString)) { - addValToSet(usetNode, 2); - fSawBOF = true; - } } @@ -432,16 +423,6 @@ int32_t RBBISetBuilder::getDictCategoriesStart() const { } -//------------------------------------------------------------------------ -// -// sawBOF -// -//------------------------------------------------------------------------ -UBool RBBISetBuilder::sawBOF() const { - return fSawBOF; -} - - //------------------------------------------------------------------------ // // getFirstChar Given a runtime RBBI character category, find diff --git a/deps/icu-small/source/common/rbbisetb.h b/deps/icu-small/source/common/rbbisetb.h index 2c7e82ca194f..e75c0bd367d7 100644 --- a/deps/icu-small/source/common/rbbisetb.h +++ b/deps/icu-small/source/common/rbbisetb.h @@ -96,8 +96,7 @@ class RBBISetBuilder : public UMemory { int32_t getTrieSize() /*const*/; // Size in bytes of the serialized Trie. void serializeTrie(uint8_t *where); // write out the serialized Trie. UChar32 getFirstChar(int32_t val) const; - UBool sawBOF() const; // Indicate whether any references to the {bof} pseudo - // character were encountered. + /** * Merge two character categories that have been identified as having equivalent behavior. * The ranges belonging to the second category (table column) will be added to the first. @@ -132,8 +131,6 @@ class RBBISetBuilder : public UMemory { // If there are no Dictionary categories, set to the last category + 1. int32_t fDictCategoriesStart; - UBool fSawBOF; - RBBISetBuilder(const RBBISetBuilder &other) = delete; // forbid copying of this class RBBISetBuilder &operator=(const RBBISetBuilder &other) = delete; // forbid copying of this class }; diff --git a/deps/icu-small/source/common/rbbistbl.cpp b/deps/icu-small/source/common/rbbistbl.cpp index 27f31a9d552c..c100615114f7 100644 --- a/deps/icu-small/source/common/rbbistbl.cpp +++ b/deps/icu-small/source/common/rbbistbl.cpp @@ -41,11 +41,10 @@ U_CDECL_END U_NAMESPACE_BEGIN RBBISymbolTable::RBBISymbolTable(RBBIRuleScanner *rs, const UnicodeString &rules, UErrorCode &status) - : fRules(rules), fRuleScanner(rs), ffffString(static_cast(0xffff)) + : fRules(rules), fRuleScanner(rs) { fHashTable = nullptr; - fCachedSetLookup = nullptr; - + fHashTable = uhash_open(uhash_hashUnicodeString, uhash_compareUnicodeString, nullptr, &status); // uhash_open checks status if (U_FAILURE(status)) { @@ -71,60 +70,47 @@ RBBISymbolTable::~RBBISymbolTable() // const UnicodeString *RBBISymbolTable::lookup(const UnicodeString& s) const { - RBBISymbolTableEntry *el; - RBBINode *varRefNode; - RBBINode *exprNode; - RBBINode *usetNode; - const UnicodeString *retString; - RBBISymbolTable *This = const_cast(this); // cast off const - - el = static_cast(uhash_get(fHashTable, &s)); + const RBBISymbolTableEntry* const el = + static_cast(uhash_get(fHashTable, &s)); if (el == nullptr) { return nullptr; } + const RBBINode& exprNode = *el->val->fLeftChild; // Root node of expression for variable + // Return the original source string for the expression. + // Note that for set-valued variables used in UnicodeSet expressions, this would be rejected by + // the UnicodeSet parser if the source itself contains variable references. For instance, with + // $CaseIgnorable = [[:Mn:][:Me:][:Cf:][:Lm:][:Sk:] \u0027 \u00AD \u2019]; + // $Cased = [[:Upper_Case:][:Lower_Case:][:Lt:] - $CaseIgnorable]; + // If lookupSet were not overridden, when parsing the right-hand side of + // $NotCased = [[^ $Cased] - $CaseIgnorable]; + // there would be a call to lookup("Cased") which would return + // "[[:Upper_Case:][:Lower_Case:][:Lt:]-$CaseIgnorable]". This contains a variable, which is + // disallowed by the UnicodeSet parser inside a variable expansion. + // However, set-valued variables are pre-parsed, and returned by lookupSet instead, so this call + // to lookup() never happens; instead, lookupSet("CaseIgnorable") is called when computing + // $Cased and returns the non-null value of $CaseIgnorable, and then when computing $NotCased, + // lookupSet("Cased") returns the value computed for $Cased. + return &exprNode.fText; +} - varRefNode = el->val; - exprNode = varRefNode->fLeftChild; // Root node of expression for variable - if (exprNode->fType == RBBINode::setRef) { - // The $variable refers to a single UnicodeSet - // return the ffffString, which will subsequently be interpreted as a - // stand-in character for the set by RBBISymbolTable::lookupMatcher() - usetNode = exprNode->fLeftChild; - This->fCachedSetLookup = usetNode->fInputSet; - retString = &ffffString; +const UnicodeSet* RBBISymbolTable::lookupSet(const UnicodeString& s) const { + const RBBISymbolTableEntry* const el = static_cast(uhash_get(fHashTable, &s)); + if (el == nullptr) { + return nullptr; } - else - { - // The variable refers to something other than just a set. - // return the original source string for the expression - retString = &exprNode->fText; - This->fCachedSetLookup = nullptr; + const RBBINode& exprNode = *el->val->fLeftChild; + if (exprNode.fType == RBBINode::setRef) { + return exprNode.fLeftChild->fInputSet; + } else { + return nullptr; } - return retString; } -// -// RBBISymbolTable::lookupMatcher This function from the abstract symbol table -// interface maps a single stand-in character to a -// pointer to a Unicode Set. The Unicode Set code uses this -// mechanism to get all references to the same $variable -// name to refer to a single common Unicode Set instance. -// -// This implementation cheats a little, and does not maintain a map of stand-in chars -// to sets. Instead, it takes advantage of the fact that the UnicodeSet -// constructor will always call this function right after calling lookup(), -// and we just need to remember what set to return between these two calls. -const UnicodeFunctor *RBBISymbolTable::lookupMatcher(UChar32 ch) const -{ - UnicodeSet *retVal = nullptr; - RBBISymbolTable *This = const_cast(this); // cast off const - if (ch == 0xffff) { - retVal = fCachedSetLookup; - This->fCachedSetLookup = nullptr; - } - return retVal; +// No longer used, see ICU-23297. +const UnicodeFunctor* RBBISymbolTable::lookupMatcher(UChar32 /*ch*/) const { + return nullptr; } // diff --git a/deps/icu-small/source/common/rbbitblb.cpp b/deps/icu-small/source/common/rbbitblb.cpp index 034d7fbf6d8b..44d9b3d7b017 100644 --- a/deps/icu-small/source/common/rbbitblb.cpp +++ b/deps/icu-small/source/common/rbbitblb.cpp @@ -10,6 +10,7 @@ // rbbitblb.cpp // +#include #include "unicode/utypes.h" @@ -28,6 +29,53 @@ U_NAMESPACE_BEGIN +namespace { + +// Given the `RBBITableBuilder::fDStates` vector of `RBBIStateDescriptor`s, returns +// true if a state for which `isSink` returns true is reachable from state `source` by following +// transitions without going through any state for which `excludedState` returns true. +// Note that “going through” is distinct from “reaching”, and means entering and then leaving: A +// state can be both a sink and excluded, and can still be reachable. +bool reachableByTransitions(const UVector &states, const int32_t source, + const std::function isSink, + const std::function excludedState, UErrorCode &status) { + UStack boundary(status); + { + UVector32 &transitionsFromSource = + *static_cast(states.elementAt(source))->fDtran; + // We do not initialize boundary to `{source}`, but instead to the set of states one + // transition away from `source`; if `source` sets lookahead l and accepts lookahead k, we + // only need k and l to occupy distinct slots if there is a `source`-to-`source` path. + for (int32_t symbol = 0; symbol < transitionsFromSource.size(); ++symbol) { + const int32_t state = transitionsFromSource.elementAti(symbol); + if (state != 0) { + boundary.push(state, status); + } + } + } + const auto visited = prv::make_unique(states.size(), status); + while (U_SUCCESS(status) && !boundary.empty()) { + const int32_t s = boundary.popi(); + if (isSink(s)) { + return true; + } + if (excludedState(s) || visited[s]) { + continue; + } + visited[s] = true; + UVector32 &transitions = *static_cast(states.elementAt(s))->fDtran; + for (int32_t symbol = 0; symbol < transitions.size(); ++symbol) { + const int32_t t = transitions.elementAti(symbol); + if (t != 0 && !visited[t]) { + boundary.push(t, status); + } + } + } + return false; +} + +} // namespace + const int32_t kMaxStateFor8BitsTable = 255; RBBITableBuilder::RBBITableBuilder(RBBIRuleBuilder *rb, RBBINode **rootNode, UErrorCode &status) : @@ -92,38 +140,6 @@ void RBBITableBuilder::buildForwardTable() { } #endif - // - // If the rules contained any references to {bof} - // add a {bof} to the - // tree. Means that all matches must start out with the - // {bof} fake character. - // - if (fRB->fSetBuilder->sawBOF()) { - RBBINode *bofTop = new RBBINode(RBBINode::opCat, *fStatus); - if (bofTop == nullptr) { - *fStatus = U_MEMORY_ALLOCATION_ERROR; - } - if (U_FAILURE(*fStatus)) { - delete bofTop; - return; - } - RBBINode *bofLeaf = new RBBINode(RBBINode::leafChar, *fStatus); - // Delete and exit if memory allocation failed. - if (bofLeaf == nullptr) { - *fStatus = U_MEMORY_ALLOCATION_ERROR; - } - if (U_FAILURE(*fStatus)) { - delete bofLeaf; - delete bofTop; - return; - } - bofTop->fLeftChild = bofLeaf; - bofTop->fRightChild = fTree; - bofLeaf->fParent = bofTop; - bofLeaf->fVal = 2; // Reserved value for {bof}. - fTree = bofTop; - } - // // Add a unique right-end marker to the expression. // Appears as a cat-node, left child being the original tree, @@ -157,6 +173,9 @@ void RBBITableBuilder::buildForwardTable() { // expression. // fTree->flattenSets(*fStatus, 0); + if (U_FAILURE(*fStatus)) { + return; + } #ifdef RBBI_DEBUG if (fRB->fDebugEnv && uprv_strstr(fRB->fDebugEnv, "stree")) { RBBIDebugPuts("\nParse tree after flattening Unicode Set references."); @@ -188,13 +207,6 @@ void RBBITableBuilder::buildForwardTable() { calcChainedFollowPos(fTree, endMarkerNode); } - // - // BOF (start of input) test fixup. - // - if (fRB->fSetBuilder->sawBOF()) { - bofFixup(); - } - // // Build the DFA state transition tables. // @@ -561,7 +573,7 @@ void RBBITableBuilder::bofFixup() { // transition tables for these states, by the algorithm // of fig. 3.44 in Aho. // -// Most of the comments are quotes of Aho's psuedo-code. +// Most of the comments are quotes of Aho's pseudo-code. // //----------------------------------------------------------------------------- void RBBITableBuilder::buildStateTable() { @@ -1001,6 +1013,247 @@ void RBBITableBuilder::mergeRuleStatusVals() { +//----------------------------------------------------------------------------- +// +// minimizeStates Minimize the number of states of the DFA, by Algorithm +// 3.6 in Aho. The one twist is that instead of starting +// from a partition in two groups (accepting and non- +// accepting states), we partition according to all +// relevant properties of the states, namely the values of: +// - fAccepting—which may be non-accepting, +// unconditionally accepting, or the index of a +// lookahead—; +// - fLookAhead; +// - fTagsIdx. +// +//----------------------------------------------------------------------------- + +void RBBITableBuilder::minimizeStates() { + if (U_FAILURE(*fStatus)) { + return; + } + +#if UPRV_HAS_SANITIZER + if (fDStates->size() > 512) { + // This algorithm is sluggish on large state machines, and even more sluggish with + // sanitizers, which leads the fuzzer into the weeds, see + // https://github.com/unicode-org/icu/pull/3948#issuecomment-4335461360. + *fStatus = U_REGEX_PATTERN_TOO_BIG; + return; + } +#endif + struct StateType { + uint32_t fAccepting; + uint32_t fLookAhead; + int32_t fTagsIdx; + bool operator==(StateType const &other) const { + return fAccepting == other.fAccepting && + fLookAhead == other.fLookAhead && + fTagsIdx == other.fTagsIdx; + } + }; + // We wrap `UVector`s in `unique_ptr``s throughout so we can move them, + // including into `UVector`s (by releasing them from the `unique_ptr` + // and having the enclosing `UVector` adopt them). + // Group the states by types (but we have no maps so this is verbose). + // If there are no lookaheads and no tags, there are only two types + // (accepting and non-accepting) in which case this is exactly step 1 + // of Algorithm 3.6. + struct TypeToStates : UMemory { + TypeToStates(const StateType &type, UErrorCode &status) + : type(type), states(prv::make_unique(status, status)) {} + StateType type; + prv::unique_ptr states; + }; + UVector initialPartition(*fStatus); + initialPartition.setDeleter( + [](void *p) { delete static_cast(p); }); + for (int32_t i = 0; i < fDStates->size(); ++i) { + const RBBIStateDescriptor &state = + *static_cast(fDStates->elementAt(i)); + const StateType type{state.fAccepting, + state.fLookAhead, + state.fTagsIdx}; + int32_t j = 0; + for (; j < initialPartition.size(); ++j) { + auto &[type_j, states] = + *static_cast(initialPartition.elementAt(j)); + if (type_j == type) { + states->addElement(i, *fStatus); + break; + } + } + if (j == initialPartition.size()) { + auto newEntry = prv::make_unique(type, *fStatus, *fStatus); + if (U_FAILURE(*fStatus)) { + return; + } + newEntry->states->addElement(i, *fStatus); + initialPartition.adoptElement(newEntry.release(), *fStatus); + } + } + // The partition Π from Algorithm 3.6. + // (We could call it Π, but some member companies that integrate the ICU + // code base prohibit non-ASCII identifiers…). + auto partition = prv::make_unique(*fStatus, *fStatus); + if (U_FAILURE(*fStatus)) { + return; + } + partition->setDeleter( + [](void *p) { delete static_cast(p); }); + + for (int32_t i = 0; i < initialPartition.size(); ++i) { + partition->adoptElement( + static_cast(initialPartition.elementAt(i))->states.release(), + *fStatus); + } + // Given the index of a state 𝑠 in `fDStates`, returns a UVector of integers + // σ(𝑠) such that 𝑠.fDtran[i] (the index of the state reached by the + // transition from 𝑠 on the character class with index i) is in Π[σ(𝑠)[i]]. + // We then have σ(𝑠) == σ(𝑡) if and only if “for all input symbols 𝑎, states + // 𝑠 and 𝑡 have transitions on 𝑎 to states in the same group of Π” (which is + // what defines the refinement of 𝐺 in Fig. 3.45). + auto partition_signature = [&partition, this](int32_t stateIndex) -> prv::unique_ptr { + const RBBIStateDescriptor &state = + *static_cast(fDStates->elementAt(stateIndex)); + auto result = prv::make_unique(state.fDtran->size(), *fStatus, *fStatus); + if (U_FAILURE(*fStatus)) { + return nullptr; + } + for (int32_t i = 0; i < state.fDtran->size(); ++i) { + int32_t toState = state.fDtran->elementAti(i); + for (int32_t partIndex = 0; partIndex < partition->size(); ++partIndex) { + const UVector &part = *static_cast(partition->elementAt(partIndex)); + if (part.contains(toState)) { + result->addElement(partIndex, *fStatus); + break; + } + } + } + result->setComparer([](const UElement left, const UElement right) -> UBool { + return left.integer == right.integer; + }); + return result; + }; + // The loop between steps 2. and 3. of Algorithm 3.6. + for (;;) { + // Π_new. + auto partitionNew = prv::make_unique(*fStatus, *fStatus); + if (U_FAILURE(*fStatus)) { + return; + } + partitionNew->setDeleter( + [](void *p) { delete static_cast(p); }); + // The procedure from Figure 3.45, Construction of Π_new. + bool refined = false; + for (int32_t i = 0; i < partition->size(); ++i) { + // Group 𝐺 in Π (=`partition`). + const UVector &group = *static_cast(partition->elementAt(i)); + // Partition 𝐺 based on the signature, see above. + struct SignatureToStates : UMemory { + SignatureToStates(prv::unique_ptr signature, UErrorCode &status) + : signature(std::move(signature)), states(prv::make_unique(status, status)) { + } + prv::unique_ptr signature; + prv::unique_ptr states; + }; + UVector groupRefinement(*fStatus); + groupRefinement.setDeleter([](void *p) { delete static_cast(p); }); + for (int32_t j = 0; j < group.size(); ++j) { + // Index of a state in the group. + const int32_t s = group.elementAti(j); + auto signature = partition_signature(s); + int32_t k = 0; + for (; k < groupRefinement.size(); ++k) { + const auto &[subgroupSignature, subgroup] = + *static_cast(groupRefinement.elementAt(k)); + if (*subgroupSignature == *signature) { + subgroup->addElement(s, *fStatus); + break; + } + } + if (k == groupRefinement.size()) { + const auto newEntry = + new SignatureToStates(std::move(signature), *fStatus); + if (U_FAILURE(*fStatus)) { + return; + } + if (newEntry == nullptr) { + *fStatus = U_MEMORY_ALLOCATION_ERROR; + return; + } + newEntry->states->addElement(s, *fStatus); + groupRefinement.adoptElement(newEntry, *fStatus); + } + } + refined |= groupRefinement.size() > 1; + for (int32_t j = 0; j < groupRefinement.size(); ++j) { + auto &[_, subgroup] = *static_cast( + groupRefinement.elementAt(j)); + partitionNew->adoptElement(subgroup.release(), *fStatus); + } + } + if (refined) { + partition = std::move(partitionNew); + } else { + break; + } + } + // We will use the indices in `partition` as the new state indices. Make + // sure that the start (1) and stop (0) states remain in their correct + // places; everything else can merrily be scrambled. + for (int i = 0; i < partition->size(); ++i) { + UVector *const part_i = static_cast(partition->elementAt(i)); + if (part_i->contains(0)) { + void *const part_0 = partition->elementAt(0); + // No swap on UVector, so we briefly remove the deleter. + const auto deleter = partition->setDeleter(nullptr); + partition->setElementAt(part_i, 0); + partition->setElementAt(part_0, i); + partition->setDeleter(deleter); + } else if (part_i->contains(1)) { + void *const part_1 = partition->elementAt(1); + const auto deleter = partition->setDeleter(nullptr); + partition->setElementAt(part_i, 1); + partition->setElementAt(part_1, i); + partition->setDeleter(deleter); + } + } + if (U_FAILURE(*fStatus)) { + return; + } + auto oldStateToPart = prv::make_unique_for_overwrite(fDStates->size(), *fStatus); + if (U_FAILURE(*fStatus)) { + return; + } + for (int i = 0; i < partition->size(); ++i) { + const UVector &part = *static_cast(partition->elementAt(i)); + for (int j = 0; j < part.size(); ++j) { + oldStateToPart[part.elementAti(j)] = i; + } + } + auto const oldStates = prv::unique_ptr(fDStates); + fDStates = prv::make_unique(*fStatus, *fStatus).release(); + if (U_FAILURE(*fStatus)) { + return; + } + for (int i = 0; i < partition->size(); ++i) { + const UVector &part = *static_cast(partition->elementAt(i)); + RBBIStateDescriptor *const state = + static_cast(oldStates->elementAt(part.elementAti(0))); + fDStates->addElement(state, *fStatus); + for (int j = 0; j < state->fDtran->size(); ++j) { + state->fDtran->setElementAt(oldStateToPart[state->fDtran->elementAti(j)], j); + } + oldStates->setElementAt(nullptr, part.elementAti(0)); + } + oldStates->setDeleter([](void *p) { delete static_cast(p); }); +} + + + + + //----------------------------------------------------------------------------- @@ -1196,41 +1449,6 @@ void RBBITableBuilder::removeColumn(int32_t column) { } } -/* - * findDuplicateState - */ -bool RBBITableBuilder::findDuplicateState(IntPair *states) { - int32_t numStates = fDStates->size(); - int32_t numCols = fRB->fSetBuilder->getNumCharCategories(); - - for (; states->firstfirst++) { - RBBIStateDescriptor* firstSD = static_cast(fDStates->elementAt(states->first)); - for (states->second=states->first+1; states->secondsecond++) { - RBBIStateDescriptor* duplSD = static_cast(fDStates->elementAt(states->second)); - if (firstSD->fAccepting != duplSD->fAccepting || - firstSD->fLookAhead != duplSD->fLookAhead || - firstSD->fTagsIdx != duplSD->fTagsIdx) { - continue; - } - bool rowsMatch = true; - for (int32_t col=0; col < numCols; ++col) { - int32_t firstVal = firstSD->fDtran->elementAti(col); - int32_t duplVal = duplSD->fDtran->elementAti(col); - if (!((firstVal == duplVal) || - ((firstVal == states->first || firstVal == states->second) && - (duplVal == states->first || duplVal == states->second)))) { - rowsMatch = false; - break; - } - } - if (rowsMatch) { - return true; - } - } - } - return false; -} - bool RBBITableBuilder::findDuplicateSafeState(IntPair *states) { int32_t numStates = fSafeTable->size(); @@ -1259,34 +1477,6 @@ bool RBBITableBuilder::findDuplicateSafeState(IntPair *states) { return false; } - -void RBBITableBuilder::removeState(IntPair duplStates) { - const int32_t keepState = duplStates.first; - const int32_t duplState = duplStates.second; - U_ASSERT(keepState < duplState); - U_ASSERT(duplState < fDStates->size()); - - RBBIStateDescriptor* duplSD = static_cast(fDStates->elementAt(duplState)); - fDStates->removeElementAt(duplState); - delete duplSD; - - int32_t numStates = fDStates->size(); - int32_t numCols = fRB->fSetBuilder->getNumCharCategories(); - for (int32_t state=0; state(fDStates->elementAt(state)); - for (int32_t col=0; colfDtran->elementAti(col); - int32_t newVal = existingVal; - if (existingVal == duplState) { - newVal = keepState; - } else if (existingVal > duplState) { - newVal = existingVal - 1; - } - sd->fDtran->setElementAt(newVal, col); - } - } -} - void RBBITableBuilder::removeSafeState(IntPair duplStates) { const int32_t keepState = duplStates.first; const int32_t duplState = duplStates.second; @@ -1317,15 +1507,160 @@ void RBBITableBuilder::removeSafeState(IntPair duplStates) { * RemoveDuplicateStates */ int32_t RBBITableBuilder::removeDuplicateStates() { - IntPair dupls = {3, 0}; - int32_t numStatesRemoved = 0; + const int32_t oldStateCount = fDStates->size(); + minimizeStates(); + return fDStates->size() - oldStateCount; +} + + +/* + * Minimizes the number of slots used by the lookaheads. + * + * When the state machine is first generated, every lookahead rule occupies a different slot, for instance, + * given + * x / z; # Lookahead 1 below. + * y / z; # Lookahead 2 below. + * [xyz]*; + * the following state machine is produced, + * x + * x ⮏ z + * → 𝑠₁ → 𝑎₁ + * START x⇅y + * ↻z → 𝑠₂ → 𝑎₂ + * y ↻ z + * y + * + * where 𝑠ᵢ sets the current position for lookahead i (assigning pᵢ=p_current), and 𝑎ᵢ accepts + * lookahead i if set, i.e., on state 𝑎ᵢ,the break iterator returns pᵢ if set. Because they accept + * different lookaheads, states 𝑎₁ and 𝑎₂ are distinct in the initial partition constructed by + * `minimizeStates`, and cannot be merged, and the state machine cannot be simplified. + * + * However, there is no need for lookaheads 1 and 2 to occupy different slots, i.e., there is no + * need for the state machine to separately store the positions set by 𝑠₁ and 𝑠₂ (for p₁ and p₂ to + * be distinct variables). Indeed, if state 𝑠₁ is encountered, state 𝑎₂ cannot be reached without + * going through state 𝑠₂, and vice versa, so if p₁ and p₂ are backed by the same variable p, the + * value set by p=p₁=p_current on 𝑠₁ will have been overriden by p=p₂=p_current on 𝑠₂, so that the + * p₁-p₂ merger has no effect. + * + * If the lookaheads are merged, states 𝑎₁ and 𝑎₂ are no longer initially distinct in + * `minimizeStates` (they both accept the only lookahead), and indeed the whole state machine + * simplifies to + * [xy] z + * START → 𝑠 → 𝑎 + * ↻z ↻ + * [xy] + * + * Lookaheads i and j can be merged if: + * 1. From any state that sets lookahead i, no state that accepts lookahead j can be reached without + * going through a state that sets lookahead j; and + * 2. From any state that sets lookahead j, no state that accepts lookahead i can be reached without + * going through a state that sets lookahead i. + * This reachability relation defines a directed graph of lookaheads, and an optimal merging of + * lookaheads is then a colouring of that graph. (In the example above, the graph of lookaheads has + * no edges, and is thus 1-colourable; more interesting examples can be found in the test + * TestLookaheadPolychromy.) + * + * This function first computes the adjacency matrix of lookahead reachability, and then colours the + * graph of lookaheads and reassigns lookahead slots accordingly. + */ +void RBBITableBuilder::minimizeLookaheads() { + if (fLASlotsInUse == ACCEPTING_UNCONDITIONAL) { + return; + } + const int32_t lookaheadCount = fLASlotsInUse - ACCEPTING_UNCONDITIONAL; + // The last lookahead is fLASlotsInUse. + const int32_t firstLookahead = ACCEPTING_UNCONDITIONAL + 1; + const auto stateDescriptor = [this](const int32_t state) -> RBBIStateDescriptor & { + return *static_cast(fDStates->elementAt(state)); + }; + + const auto lookaheadReachability = + prv::make_unique(lookaheadCount * lookaheadCount, *fStatus); + if (U_FAILURE(*fStatus)) { + return; + } + for (int32_t l = firstLookahead; l <= fLASlotsInUse; ++l) { + for (int32_t k = firstLookahead; k <= fLASlotsInUse; ++k) { + if (k != l) { + for (int32_t source = 1; source < fDStates->size(); ++source) { + if (static_cast(stateDescriptor(source).fLookAhead) != l) { + continue; + } + if (reachableByTransitions( + *fDStates, source, /*isSink=*/ + [&](const int32_t state) { + return static_cast(stateDescriptor(state).fAccepting) == k; + }, + /*excludedState=*/ + [&](const int32_t state) { + return static_cast(stateDescriptor(state).fLookAhead) == k; + }, + *fStatus)) { + lookaheadReachability[(l - firstLookahead) * lookaheadCount + k - + firstLookahead] = true; + } + } + } + } + } - while (findDuplicateState(&dupls)) { - // printf("Removing duplicate states (%d, %d)\n", dupls.first, dupls.second); - removeState(dupls); - ++numStatesRemoved; + const auto colours = prv::make_unique_for_overwrite(lookaheadCount, *fStatus); + if (U_FAILURE(*fStatus)) { + return; + } + // Brute-force colouring: the number of lookaheads is in practice small, and the chromatic + // number is in practice 1, so this usually terminates in one iteration of the first two loops. + // Of course the worst case is exponential, but exponentials are everywhere in regular + // expressions anyway. + // The outer loop terminates after at most `lookaheadCount` iterations + // (when the chromatic number equals the number of lookaheads being coloured). + for (int32_t chromaticNumber = 1;; ++chromaticNumber) { + uprv_memset(colours.get(), 0, sizeof(int32_t) * lookaheadCount); + // This loop terminates after at most chromaticNumber ** lookaheadCount iterations. + for (;;) { + // Here `source` and `sink` correspond to lookaheads, not states. + for (int source = 0; source < lookaheadCount; ++source) { + for (int sink = 0; sink < lookaheadCount; ++sink) { + if (lookaheadReachability[source * lookaheadCount + sink] && + colours[source] == colours[sink]) { + goto nextColouring; + } + } + } + + // We have found a valid colouring of the graph of lookaheads. Assign lookahead slots + // accordingly. + for (int i = 0; i < fDStates->size(); ++i) { + if (stateDescriptor(i).fAccepting > ACCEPTING_UNCONDITIONAL) { + stateDescriptor(i).fAccepting = + firstLookahead + + colours[stateDescriptor(i).fAccepting - firstLookahead]; + } + if (stateDescriptor(i).fLookAhead != 0) { + stateDescriptor(i).fLookAhead = + ACCEPTING_UNCONDITIONAL + 1 + + colours[stateDescriptor(i).fLookAhead - firstLookahead]; + } + } + fLASlotsInUse = ACCEPTING_UNCONDITIONAL + chromaticNumber; + return; + + nextColouring: + // Increment the colour of the first lookahead, and then carry if we reach + // `chromaticNumber` (which is one more than the greatest colour). + ++colours[0]; + for (int32_t i = 0; i < lookaheadCount - 1 && colours[i] == chromaticNumber; + ++i) { + colours[i] = 0; + ++colours[i + 1]; + } + if (colours[lookaheadCount - 1] == chromaticNumber) { + // We tried all assignments of colours in {0, …, chromaticNumber - 1}, + // we need more colours. + break; + } + } } - return numStatesRemoved; } @@ -1399,9 +1734,6 @@ void RBBITableBuilder::exportTable(void *where) { if (fRB->fLookAheadHardBreak) { table->fFlags |= RBBI_LOOKAHEAD_HARD_BREAK; } - if (fRB->fSetBuilder->sawBOF()) { - table->fFlags |= RBBI_BOF_REQUIRED; - } for (state=0; statefNumStates; state++) { RBBIStateDescriptor* sd = static_cast(fDStates->elementAt(state)); @@ -1442,8 +1774,15 @@ void RBBITableBuilder::buildSafeReverseTable(UErrorCode &status) { // 1. Identify pairs of character classes that are "safe." Safe means that boundaries // following the pair do not depend on context or state before the pair. To test // whether a pair is safe, run it through the main forward state table, starting - // from each state. If the final state is the same, no matter what the starting state, - // the pair is safe. + // from each possible configuration. If the final configuration is the same, no matter what the + // starting configuration, the pair is safe. + // Note that the configuration includes not only the state, but also the last accepting position + // and the lookaheads. Some differences in final lookaheads can be ignored when it can be shown + // that they do not affect breaks after the pair: this happens when we come back out of the pair + // with a matching configuration when the lookahead matches. + // TODO(egg): It is possible for pairs to be safe even if the outgoing states differ depending + // on the state before the pair; this would require a more thorough analysis to handle, probably + // in the style of what happens in minimizeStates. // // 2. Build a state table that recognizes the safe pairs. It's similar to their // forward table, with a column for each input character [class], and a row for @@ -1467,31 +1806,200 @@ void RBBITableBuilder::buildSafeReverseTable(UErrorCode &status) { int32_t numCharClasses = fRB->fSetBuilder->getNumCharCategories(); int32_t numStates = fDStates->size(); - - for (int32_t c1=0; c1(fLASlotsInUse + 1, status); + const auto wantedLookaheadsInPair = + prv::make_unique_for_overwrite(fLASlotsInUse + 1, status); + if (U_FAILURE(status)) { + return; + } + // Same as in rbbi.cpp. + // TODO(egg): Maybe this should move to rbbidata.h like ACCEPTING_UNCONDITIONAL? + constexpr int32_t START_STATE = 1; + // Index -2 is used to signify a text position before the pair (c1, c2). + constexpr int32_t BEFORE_PAIR = -2; + // In lookaheadPositions, index -1 is used to signify that the lookahead has not been set. + constexpr int8_t LOOKAHEAD_NOT_SET = -1; + for (int32_t c1 = 1; c1 < numCharClasses; ++c1) { + if (fRB->fSetBuilder->getFirstChar(c1) < 0) { + continue; + } + for (int32_t c2 = 1; c2 < numCharClasses; ++c2) { + if (fRB->fSetBuilder->getFirstChar(c2) < 0) { + continue; + } int32_t wantedEndState = -1; - int32_t endState = 0; - for (int32_t startState = 1; startState < numStates; ++startState) { - RBBIStateDescriptor *startStateD = static_cast(fDStates->elementAt(startState)); - int32_t s2 = startStateD->fDtran->elementAti(c1); - RBBIStateDescriptor *s2StateD = static_cast(fDStates->elementAt(s2)); - endState = s2StateD->fDtran->elementAti(c2); - if (wantedEndState < 0) { - wantedEndState = endState; - } else { - if (wantedEndState != endState) { - break; + int32_t wantedLastAcceptingPosition; + bool mustCheckConsistentWithStartC2 = false; + const int32_t text[2] = {c1, c2}; + for (int32_t injectedState = START_STATE; injectedState < numStates; ++injectedState) { + for (int32_t injectedLookahead = ACCEPTING_UNCONDITIONAL; + injectedLookahead <= fLASlotsInUse; ++injectedLookahead) { + int32_t lastBreak = BEFORE_PAIR; + int32_t lastAcceptingPosition = BEFORE_PAIR; + uprv_memset(lookaheadPositions.get(), LOOKAHEAD_NOT_SET, fLASlotsInUse + 1); + if (injectedLookahead != ACCEPTING_UNCONDITIONAL) { + lookaheadPositions[injectedLookahead] = BEFORE_PAIR; + } + { + const RBBIStateDescriptor &injectedStateDescriptor = + *static_cast(fDStates->elementAt(injectedState)); + if (injectedStateDescriptor.fAccepting == ACCEPTING_UNCONDITIONAL) { + lastAcceptingPosition = 0; + } else if (static_cast(injectedStateDescriptor.fAccepting) == + injectedLookahead) { + continue; + } + if (injectedStateDescriptor.fLookAhead != 0) { + lookaheadPositions[injectedStateDescriptor.fLookAhead] = 0; + } + } + int32_t s = injectedState; + int32_t i = 0; + goto dfaStep; + // Loop Run_DFA in L2/26-135, without the termination condition (we do not need + // to simulate the end of text). + for (;;) { + s = START_STATE; + uprv_memset(lookaheadPositions.get(), LOOKAHEAD_NOT_SET, fLASlotsInUse + 1); + i = lastBreak; + // Loop Find_Next_Break in L2/26-135. + for (;;) { + dfaStep: + if (i == BEFORE_PAIR || i == 2) { + goto inspectFinalState; + } + const int32_t symbolAhead = text[i]; + ++i; + const RBBIStateDescriptor *sDescriptor = + static_cast(fDStates->elementAt(s)); + if (sDescriptor->fDtran->elementAti(symbolAhead) != 0) { + s = sDescriptor->fDtran->elementAti(symbolAhead); + sDescriptor = + static_cast(fDStates->elementAt(s)); + } else { + if (lastBreak != BEFORE_PAIR && + lastAcceptingPosition == lastBreak) { + // The pair (c1, c2) puts us in an infinite loop from the + // current configuration, presumably because some one-character + // strings are not in the language recognized by the rules). + // This should never happen for a segmentation algorithm. The + // RBBI implementation forcefully advances the iterator in that + // case; let’s just say the pair is unsafe and move on. + goto nextSymbolPair; + } + lastBreak = lastAcceptingPosition; + break; + } + + if (sDescriptor->fAccepting == ACCEPTING_UNCONDITIONAL) { + lastAcceptingPosition = i; + } else if (sDescriptor->fAccepting > ACCEPTING_UNCONDITIONAL && + lookaheadPositions[sDescriptor->fAccepting] != + LOOKAHEAD_NOT_SET) { + lastBreak = lookaheadPositions[sDescriptor->fAccepting]; + break; + } + if (sDescriptor->fLookAhead != 0) { + lookaheadPositions[sDescriptor->fLookAhead] = i; + } + } + } + inspectFinalState: + if (i == BEFORE_PAIR) { + // Starting on `injectedState` with `injectedLookahead` set, with the pair + // (c1, c2) ahead, the state machine finds a break before the pair; it will + // thus come back to the pair in a different configuration, which is covered + // by some other iteration of the loop over `injectedState` and + // `injectedLookahead`. + continue; + } + if (wantedEndState < 0) { + wantedEndState = s; + wantedLastAcceptingPosition = lastAcceptingPosition; + for (int32_t l = ACCEPTING_UNCONDITIONAL + 1; l <= fLASlotsInUse; ++l) { + if (lookaheadPositions[l] != LOOKAHEAD_NOT_SET && + lookaheadPositions[l] != BEFORE_PAIR && + lookaheadPositions[l] != 0) { + wantedLookaheadsInPair[l] = lookaheadPositions[i]; + } else { + wantedLookaheadsInPair[l] = LOOKAHEAD_NOT_SET; + } + } + } else { + if (wantedEndState != s) { + // We can get out of the pair on different states depending on the + // initial configuration. + goto nextSymbolPair; + } + if (wantedLastAcceptingPosition != lastAcceptingPosition) { + goto nextSymbolPair; + } + } + // A lookahead some distance before the pair (set to BEFORE_PAIR) means we + // will come back to the pair in a different configuration if it matches, a + // lookahead at position 0 means we get back to the pair on the start state + // if it matches; either way, this is covered by other iterations of the + // loop over injected states and lookaheads. + // For lookaheads at position 1 (in the middle of the pair) and 2 (after the + // pair), these have two ways of being safe: either they are always set, or it + // does not matter if they are set, because if they match we come back with the + // same state. + for (int32_t l = ACCEPTING_UNCONDITIONAL + 1; l <= fLASlotsInUse; ++l) { + if (lookaheadPositions[l] == BEFORE_PAIR || lookaheadPositions[l] == 0 || + lookaheadPositions[l] == wantedLookaheadsInPair[l]) { + continue; + } + if (lookaheadPositions[l] == 2 || wantedLookaheadsInPair[l] == 2) { + // A lookahead after the pair means we will come back to the end of the + // pair on the start state if it matches, so in order for the pair to be + // safe if that lookahead is not consistently set, we must have left it + // on the start state. + if (wantedEndState != START_STATE) { + goto nextSymbolPair; + } + } + if (lookaheadPositions[l] == 1 || wantedLookaheadsInPair[l] == 1) { + // If a lookahead in the middle of the pair matches, we will come back + // to c2 on the start state. + mustCheckConsistentWithStartC2 = true; + } } } } - if (wantedEndState == endState) { - safePairs.append(static_cast(c1)); - safePairs.append(static_cast(c2)); - // printf("(%d, %d) ", c1, c2); + if (mustCheckConsistentWithStartC2) { + const RBBIStateDescriptor& startDescriptor = + *static_cast(fDStates->elementAt(START_STATE)); + const auto c2State = startDescriptor.fDtran->elementAti(c2); + if (c2State != wantedEndState) { + goto nextSymbolPair; + } + const RBBIStateDescriptor& c2StateDescriptor = + *static_cast(fDStates->elementAt(c2State)); + // In a segmentation algorithm, any single symbol transitions to an + // accepting state from the start state (a single character is a + // possible segment), so we know c2State is accepting. + U_ASSERT(c2StateDescriptor.fAccepting == ACCEPTING_UNCONDITIONAL); + if (wantedLastAcceptingPosition != 2) { + goto nextSymbolPair; + } + // If that in turn sets a lookahead, we have a lookahead after the + // pair. If we consistently have that the pair is safe. Otherwise, if we match + // that lookahead, we end up on the start state. + for (int32_t l = ACCEPTING_UNCONDITIONAL + 1; l <= fLASlotsInUse; ++l) { + if (((wantedLookaheadsInPair[l] == 2) != + (static_cast(c2StateDescriptor.fLookAhead) == l)) && + wantedEndState != START_STATE) { + goto nextSymbolPair; + } + } } + safePairs.append(static_cast(c1)); + safePairs.append(static_cast(c2)); + nextSymbolPair: + continue; } - // printf("\n"); } // Populate the initial safe table. diff --git a/deps/icu-small/source/common/rbbitblb.h b/deps/icu-small/source/common/rbbitblb.h index 01eee3da4ef0..6adfbed90c68 100644 --- a/deps/icu-small/source/common/rbbitblb.h +++ b/deps/icu-small/source/common/rbbitblb.h @@ -79,6 +79,13 @@ class RBBITableBuilder : public UMemory { */ int32_t removeDuplicateStates(); + /** + * Minimizes the number of slots used by the lookaheads. + * This must be called before `removeDuplicateStates`: by merging lookaheads, it removes + * distinctions between states that would be preserved by `removeDuplicateStates`. + */ + void minimizeLookaheads(); + /** Build the safe reverse table from the already-constructed forward table. */ void buildSafeReverseTable(UErrorCode &status); @@ -105,6 +112,7 @@ class RBBITableBuilder : public UMemory { void flagLookAheadStates(); void flagTaggedStates(); void mergeRuleStatusVals(); + void minimizeStates(); /** * Merge redundant state table columns, eliminating character classes with identical behavior. @@ -114,23 +122,6 @@ class RBBITableBuilder : public UMemory { void addRuleRootNodes(UVector *dest, RBBINode *node); - /** - * Find duplicate (redundant) states, beginning at the specified pair, - * within this state table. This is an iterator-like function, used to - * identify states (state table rows) that can be eliminated. - * @param states in/out parameter, specifies where to start looking for duplicates, - * and returns the first pair of duplicates found, if any. - * @return true if duplicate states were found, false otherwise. - */ - bool findDuplicateState(IntPair *states); - - /** Remove a duplicate state. - * @param duplStates The duplicate states. The first is kept, the second is removed. - * All references to the second in the state table are retargeted - * to the first. - */ - void removeState(IntPair duplStates); - /** Find the next duplicate state in the safe reverse table. An iterator function. * @param states in/out parameter, specifies where to start looking for duplicates, * and returns the first pair of duplicates found, if any. diff --git a/deps/icu-small/source/common/resbund.cpp b/deps/icu-small/source/common/resbund.cpp index 4c14dae133ee..fc26e55b7f94 100644 --- a/deps/icu-small/source/common/resbund.cpp +++ b/deps/icu-small/source/common/resbund.cpp @@ -213,7 +213,7 @@ ResourceBundle::ResourceBundle(const char* path, const Locale& locale, UErrorCod } -ResourceBundle& ResourceBundle::operator=(const ResourceBundle& other) +ResourceBundle& ResourceBundle::operator=(const ResourceBundle& other) U_LIFETIME_BOUND { if(this == &other) { return *this; @@ -249,17 +249,18 @@ ResourceBundle::clone() const { return new ResourceBundle(*this); } -UnicodeString ResourceBundle::getString(UErrorCode& status) const { +UnicodeString ResourceBundle::getString(UErrorCode& status) const U_LIFETIME_BOUND { int32_t len = 0; const char16_t *r = ures_getString(fResource, &len, &status); return UnicodeString(true, r, len); } -const uint8_t *ResourceBundle::getBinary(int32_t& len, UErrorCode& status) const { +const uint8_t* ResourceBundle::getBinary(int32_t& len, UErrorCode& status) const U_LIFETIME_BOUND { return ures_getBinary(fResource, &len, &status); } -const int32_t *ResourceBundle::getIntVector(int32_t& len, UErrorCode& status) const { +const int32_t* ResourceBundle::getIntVector(int32_t& len, + UErrorCode& status) const U_LIFETIME_BOUND { return ures_getIntVector(fResource, &len, &status); } @@ -271,11 +272,11 @@ int32_t ResourceBundle::getInt(UErrorCode& status) const { return ures_getInt(fResource, &status); } -const char *ResourceBundle::getName() const { +const char* ResourceBundle::getName() const U_LIFETIME_BOUND { return ures_getName(fResource); } -const char *ResourceBundle::getKey() const { +const char* ResourceBundle::getKey() const U_LIFETIME_BOUND { return ures_getKey(fResource); } @@ -307,13 +308,13 @@ ResourceBundle ResourceBundle::getNext(UErrorCode& status) { return res; } -UnicodeString ResourceBundle::getNextString(UErrorCode& status) { +UnicodeString ResourceBundle::getNextString(UErrorCode& status) U_LIFETIME_BOUND { int32_t len = 0; const char16_t* r = ures_getNextString(fResource, &len, nullptr, &status); return UnicodeString(true, r, len); } -UnicodeString ResourceBundle::getNextString(const char ** key, UErrorCode& status) { +UnicodeString ResourceBundle::getNextString(const char** key, UErrorCode& status) U_LIFETIME_BOUND { int32_t len = 0; const char16_t* r = ures_getNextString(fResource, &len, key, &status); return UnicodeString(true, r, len); @@ -331,7 +332,8 @@ ResourceBundle ResourceBundle::get(int32_t indexR, UErrorCode& status) const { return res; } -UnicodeString ResourceBundle::getStringEx(int32_t indexS, UErrorCode& status) const { +UnicodeString ResourceBundle::getStringEx(int32_t indexS, + UErrorCode& status) const U_LIFETIME_BOUND { int32_t len = 0; const char16_t* r = ures_getStringByIndex(fResource, indexS, &len, &status); return UnicodeString(true, r, len); @@ -359,15 +361,15 @@ ResourceBundle ResourceBundle::getWithFallback(const char* key, UErrorCode& stat } return res; } -UnicodeString ResourceBundle::getStringEx(const char* key, UErrorCode& status) const { + +UnicodeString ResourceBundle::getStringEx(const char* key, + UErrorCode& status) const U_LIFETIME_BOUND { int32_t len = 0; const char16_t* r = ures_getStringByKey(fResource, key, &len, &status); return UnicodeString(true, r, len); } -const char* -ResourceBundle::getVersionNumber() const -{ +const char* ResourceBundle::getVersionNumber() const U_LIFETIME_BOUND { return ures_getVersionNumberInternal(fResource); } @@ -375,7 +377,7 @@ void ResourceBundle::getVersion(UVersionInfo versionInfo) const { ures_getVersion(fResource, versionInfo); } -const Locale &ResourceBundle::getLocale() const { +const Locale& ResourceBundle::getLocale() const U_LIFETIME_BOUND { static UMutex gLocaleLock; Mutex lock(&gLocaleLock); if (fLocale != nullptr) { diff --git a/deps/icu-small/source/common/schriter.cpp b/deps/icu-small/source/common/schriter.cpp index d4bac8fd4f27..362ae2367839 100644 --- a/deps/icu-small/source/common/schriter.cpp +++ b/deps/icu-small/source/common/schriter.cpp @@ -71,7 +71,7 @@ StringCharacterIterator::~StringCharacterIterator() { } StringCharacterIterator& -StringCharacterIterator::operator=(const StringCharacterIterator& that) { +StringCharacterIterator::operator=(const StringCharacterIterator& that) U_LIFETIME_BOUND { UCharCharacterIterator::operator=(that); text = that.text; // we had set the input parameter's array, now we need to set our copy's array diff --git a/deps/icu-small/source/common/servloc.h b/deps/icu-small/source/common/servloc.h index 47c8ac38ae27..ea97d0d55266 100644 --- a/deps/icu-small/source/common/servloc.h +++ b/deps/icu-small/source/common/servloc.h @@ -518,7 +518,7 @@ class U_COMMON_API_CLASS ICULocaleService : public ICUService * Convenience method for callers using locales. This returns the standard * service ID enumeration. */ - U_COMMON_API virtual StringEnumeration* getAvailableLocales() const; + U_COMMON_API virtual StringEnumeration* getAvailableLocales() const U_LIFETIME_BOUND; protected: diff --git a/deps/icu-small/source/common/servls.cpp b/deps/icu-small/source/common/servls.cpp index 33a113896233..bb26a6fc3f31 100644 --- a/deps/icu-small/source/common/servls.cpp +++ b/deps/icu-small/source/common/servls.cpp @@ -159,7 +159,7 @@ class ServiceEnumeration : public StringEnumeration { int32_t _pos; private: - ServiceEnumeration(const ICULocaleService* service, UErrorCode &status) + ServiceEnumeration(const ICULocaleService* service U_LIFETIME_BOUND, UErrorCode& status) : _service(service) , _timestamp(service->getTimestamp()) , _ids(uprv_deleteUObject, nullptr, status) @@ -190,7 +190,7 @@ class ServiceEnumeration : public StringEnumeration { } public: - static ServiceEnumeration* create(const ICULocaleService* service) { + static ServiceEnumeration* create(const ICULocaleService* service U_LIFETIME_BOUND) { UErrorCode status = U_ZERO_ERROR; ServiceEnumeration* result = new ServiceEnumeration(service, status); if (U_SUCCESS(status)) { @@ -226,7 +226,7 @@ class ServiceEnumeration : public StringEnumeration { return upToDate(status) ? _ids.size() : 0; } - virtual const UnicodeString* snext(UErrorCode& status) override { + virtual const UnicodeString* snext(UErrorCode& status) U_LIFETIME_BOUND override { if (upToDate(status) && (_pos < _ids.size())) { return static_cast(_ids[_pos++]); } @@ -254,7 +254,7 @@ ServiceEnumeration::~ServiceEnumeration() {} UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ServiceEnumeration) StringEnumeration* -ICULocaleService::getAvailableLocales() const +ICULocaleService::getAvailableLocales() const U_LIFETIME_BOUND { return ServiceEnumeration::create(this); } diff --git a/deps/icu-small/source/common/simpleformatter.cpp b/deps/icu-small/source/common/simpleformatter.cpp index 66074938943e..09e0c8ef3fd2 100644 --- a/deps/icu-small/source/common/simpleformatter.cpp +++ b/deps/icu-small/source/common/simpleformatter.cpp @@ -50,7 +50,7 @@ inline UBool isInvalidArray(const void *array, int32_t length) { } // namespace -SimpleFormatter &SimpleFormatter::operator=(const SimpleFormatter& other) { +SimpleFormatter& SimpleFormatter::operator=(const SimpleFormatter& other) U_LIFETIME_BOUND { if (this == &other) { return *this; } @@ -156,33 +156,39 @@ UBool SimpleFormatter::applyPatternMinMaxArguments( } UnicodeString& SimpleFormatter::format( - const UnicodeString &value0, - UnicodeString &appendTo, UErrorCode &errorCode) const { + const UnicodeString& value0, + UnicodeString& appendTo U_LIFETIME_BOUND, + UErrorCode& errorCode) const { const UnicodeString *values[] = { &value0 }; return formatAndAppend(values, 1, appendTo, nullptr, 0, errorCode); } UnicodeString& SimpleFormatter::format( - const UnicodeString &value0, - const UnicodeString &value1, - UnicodeString &appendTo, UErrorCode &errorCode) const { + const UnicodeString& value0, + const UnicodeString& value1, + UnicodeString& appendTo U_LIFETIME_BOUND, + UErrorCode& errorCode) const { const UnicodeString *values[] = { &value0, &value1 }; return formatAndAppend(values, 2, appendTo, nullptr, 0, errorCode); } UnicodeString& SimpleFormatter::format( - const UnicodeString &value0, - const UnicodeString &value1, - const UnicodeString &value2, - UnicodeString &appendTo, UErrorCode &errorCode) const { + const UnicodeString& value0, + const UnicodeString& value1, + const UnicodeString& value2, + UnicodeString& appendTo U_LIFETIME_BOUND, + UErrorCode& errorCode) const { const UnicodeString *values[] = { &value0, &value1, &value2 }; return formatAndAppend(values, 3, appendTo, nullptr, 0, errorCode); } UnicodeString& SimpleFormatter::formatAndAppend( - const UnicodeString *const *values, int32_t valuesLength, - UnicodeString &appendTo, - int32_t *offsets, int32_t offsetsLength, UErrorCode &errorCode) const { + const UnicodeString* const* values, + int32_t valuesLength, + UnicodeString& appendTo U_LIFETIME_BOUND, + int32_t* offsets, + int32_t offsetsLength, + UErrorCode& errorCode) const { if (U_FAILURE(errorCode)) { return appendTo; } @@ -196,10 +202,13 @@ UnicodeString& SimpleFormatter::formatAndAppend( offsets, offsetsLength, errorCode); } -UnicodeString &SimpleFormatter::formatAndReplace( - const UnicodeString *const *values, int32_t valuesLength, - UnicodeString &result, - int32_t *offsets, int32_t offsetsLength, UErrorCode &errorCode) const { +UnicodeString& SimpleFormatter::formatAndReplace( + const UnicodeString* const* values, + int32_t valuesLength, + UnicodeString& result U_LIFETIME_BOUND, + int32_t* offsets, + int32_t offsetsLength, + UErrorCode& errorCode) const { if (U_FAILURE(errorCode)) { return result; } @@ -271,12 +280,16 @@ UnicodeString SimpleFormatter::getTextWithNoArguments( return sb; } -UnicodeString &SimpleFormatter::format( - const char16_t *compiledPattern, int32_t compiledPatternLength, - const UnicodeString *const *values, - UnicodeString &result, const UnicodeString *resultCopy, UBool forbidResultAsValue, - int32_t *offsets, int32_t offsetsLength, - UErrorCode &errorCode) { +UnicodeString& SimpleFormatter::format( + const char16_t* compiledPattern, + int32_t compiledPatternLength, + const UnicodeString* const* values, + UnicodeString& result U_LIFETIME_BOUND, + const UnicodeString* resultCopy, + UBool forbidResultAsValue, + int32_t* offsets, + int32_t offsetsLength, + UErrorCode& errorCode) { if (U_FAILURE(errorCode)) { return result; } diff --git a/deps/icu-small/source/common/stringpiece.cpp b/deps/icu-small/source/common/stringpiece.cpp index eb9766c01803..519ec30f761d 100644 --- a/deps/icu-small/source/common/stringpiece.cpp +++ b/deps/icu-small/source/common/stringpiece.cpp @@ -15,10 +15,10 @@ U_NAMESPACE_BEGIN -StringPiece::StringPiece(const char* str) +StringPiece::StringPiece(const char* str U_LIFETIME_BOUND) : ptr_(str), length_((str == nullptr) ? 0 : static_cast(uprv_strlen(str))) { } -StringPiece::StringPiece(const StringPiece& x, int32_t pos) { +StringPiece::StringPiece(const StringPiece& x U_LIFETIME_BOUND, int32_t pos) { if (pos < 0) { pos = 0; } else if (pos > x.length_) { @@ -28,7 +28,7 @@ StringPiece::StringPiece(const StringPiece& x, int32_t pos) { length_ = x.length_ - pos; } -StringPiece::StringPiece(const StringPiece& x, int32_t pos, int32_t len) { +StringPiece::StringPiece(const StringPiece& x U_LIFETIME_BOUND, int32_t pos, int32_t len) { if (pos < 0) { pos = 0; } else if (pos > x.length_) { diff --git a/deps/icu-small/source/common/stringtriebuilder.cpp b/deps/icu-small/source/common/stringtriebuilder.cpp index 686703906289..e5dc7e123b75 100644 --- a/deps/icu-small/source/common/stringtriebuilder.cpp +++ b/deps/icu-small/source/common/stringtriebuilder.cpp @@ -204,8 +204,11 @@ StringTrieBuilder::writeBranchSubNode(int32_t start, int32_t limit, int32_t unit // Requires start + #include "cmemory.h" +#include "unicode/unistr.h" #include "unicode/utypes.h" #include "unicode/ustring.h" #include "unicode/uchar.h" @@ -196,19 +199,25 @@ ubidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode *pErrorCode) * is this the best way to do this?? */ U_CFUNC UBool -ubidi_getMemory(BidiMemoryForAllocation *bidiMem, int32_t *pSize, UBool mayAllocate, int32_t sizeNeeded) { +ubidi_getMemory(BidiMemoryForAllocation *bidiMem, int32_t *pSize, UBool mayAllocate, size_t sizeNeeded) { + if (sizeNeeded > std::numeric_limits::max()) { + // TODO(egg): Ugly guard for ICU-23397. A cleaner fix would be to change the pSize to size_t* + // and update callers throughout to use size_t for sizes (just like uprv_malloc already does). + // Not that anyone should be running the UBA on text with that many runs… + return false; + } void **pMemory = (void **)bidiMem; /* check for existing memory */ if(*pMemory==nullptr) { /* we need to allocate memory */ if(mayAllocate && (*pMemory=uprv_malloc(sizeNeeded))!=nullptr) { - *pSize=sizeNeeded; + *pSize=static_cast(sizeNeeded); return true; } else { return false; } } else { - if(sizeNeeded<=*pSize) { + if(sizeNeeded<=static_cast(*pSize)) { /* there is already enough memory */ return true; } @@ -224,7 +233,7 @@ ubidi_getMemory(BidiMemoryForAllocation *bidiMem, int32_t *pSize, UBool mayAlloc */ if((memory=uprv_realloc(*pMemory, sizeNeeded))!=nullptr) { *pMemory=memory; - *pSize=sizeNeeded; + *pSize=static_cast(sizeNeeded); return true; } else { /* we failed to grow */ @@ -2417,9 +2426,16 @@ setParaRunsOnly(UBiDi *pBiDi, const char16_t *text, int32_t length, * to ubidi_setPara (but must make provision for possible removal of * BiDi controls. Alternatively, only use the dirProps array via * customized classifier callback. + * + * Note: We pass UBIDI_INTERNAL_RUNS_ONLY so that if mirroring changes code point + * length (e.g., U+1DB10 contracting back to U+221D), doWriteReverse() uses legacy + * 1-to-1 code unit stepping (j += k) rather than character stepping (j += origBaseLen). + * This ensures visualLength remains synchronized with pBiDi->length and allows the + * trailing surrogate half (Bidi class LTR) to act as a run boundary splitter in the + * subsequent ubidi_setPara call. */ visualLength=ubidi_writeReordered(pBiDi, visualText, length, - UBIDI_DO_MIRRORING, pErrorCode); + (saveOptions & UBIDI_DO_MIRRORING) | UBIDI_INTERNAL_RUNS_ONLY, pErrorCode); ubidi_getVisualMap(pBiDi, visualMap, pErrorCode); if(U_FAILURE(*pErrorCode)) { goto cleanup2; @@ -2471,6 +2487,7 @@ setParaRunsOnly(UBiDi *pBiDi, const char16_t *text, int32_t length, runs=pBiDi->runs=pBiDi->runsMemory; pBiDi->runCount+=addedRuns; } else { + *pErrorCode = U_MEMORY_ALLOCATION_ERROR; goto cleanup1; } } @@ -2879,8 +2896,8 @@ ubidi_getDirection(const UBiDi *pBiDi) { } } -U_CAPI const char16_t * U_EXPORT2 -ubidi_getText(const UBiDi *pBiDi) { +U_CAPI const char16_t* U_EXPORT2 +ubidi_getText(const UBiDi* pBiDi) { if(IS_VALID_PARA_OR_LINE(pBiDi)) { return pBiDi->text; } else { @@ -3034,3 +3051,105 @@ ubidi_getCustomizedClass(UBiDi *pBiDi, UChar32 c) } return dir; } + +/* Utilities for MessageFormat ------------------------------------------------*/ + +#if U_SHOW_CPLUSPLUS_API + +U_NAMESPACE_BEGIN + +U_CAPI UMFBidiOption U_EXPORT2 +ubidi_getMFOption(const UnicodeString& s) { + if (s == u"ltr") { + return U_MF_BIDI_OPTION_LTR; + } + if (s == u"rtl") { + return U_MF_BIDI_OPTION_RTL; + } + if (s == u"auto") { + return U_MF_BIDI_OPTION_AUTO; + } + return U_MF_BIDI_OPTION_INHERIT; // inherit is default +} + +// BiDi isolation +// -------------- +// `uDirOption` is the directionality from a u:dir annotation on the expression +// that produced this formatted value, if present. +// `dir` is the directionality of `fmt`. This is determined from the resolved +// value that `fmt` is part of; that is, each function can set the directionality +// of the resolved value of its result. +U_CAPI UnicodeString* U_EXPORT2 +ubidi_isolate(UMFBidiIsolationStrategy bidiIsolationStrategy, + UMFDirectionality msgdir, + UMFBidiIsolationStyle bidiIsolationStyle, + UMFBidiOption uDirOption, + UMFDirectionality dir, + UnicodeString& fmt) { + // See "The Default Bidi Strategy" at: + // https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#handling-bidirectional-text + + // If strategy is 'none', just return the string + if (bidiIsolationStrategy == U_MF_BIDI_OFF) + return &fmt; + + /* 1. Let msgdir be the directionality of the whole message, one of « 'LTR', 'RTL', 'unknown' ». These correspond to the message having left-to-right directionality, right-to-left directionality, and to the message's directionality not being known. */ + + // 2i Let fmt be the formatted string representation of the resolved value of exp. + // (Passed as argument) + + // 2ii Let dir be the directionality of fmt, one of « 'LTR', 'RTL', 'unknown' », with the same meanings as for msgdir + // (Passed as argument) + + // 2iii. Let the boolean value isolate be True if the u:dir option of the resolved value of exp has a value other than 'inherit', or False otherwise. + bool isolate = uDirOption != U_MF_BIDI_OPTION_INHERIT; + + UnicodeString bdiOpen(""); + UnicodeString bdiClose(""); + + // 2iv. If dir is 'LTR' + switch (dir) { + case U_MF_DIRECTIONALITY_LTR: + if (msgdir == U_MF_DIRECTIONALITY_LTR && !isolate) { + // 2iv(a). If msgdir is 'LTR' in the formatted output, let fmt be itself + return &fmt; + } + // 2iii(b) Else, in the formatted output, prefix fmt with U+2066 LEFT-TO-RIGHT ISOLATE and postfix it with U+2069 POP DIRECTIONAL ISOLATE. + if (bidiIsolationStyle == U_MF_BIDI_STYLE_CONTROL) { + fmt.insert(0, LRI_CHAR); + fmt.insert(fmt.length(), PDI_CHAR); + } else { + fmt.insert(0, bdiOpen); + fmt.insert(fmt.length(), bdiClose); + } + break; // End of 2iii + // 2iv. Else, if dir is 'RTL': + case U_MF_DIRECTIONALITY_RTL: + // 2iv(a). In the formatted output, prefix fmt with U+2067 RIGHT-TO-LEFT ISOLATE and postfix it with U+2069 POP DIRECTIONAL ISOLATE. + if (bidiIsolationStyle == U_MF_BIDI_STYLE_CONTROL) { + fmt.insert(0, RLI_CHAR); + fmt.insert(fmt.length(), PDI_CHAR); + } else { + fmt.insert(0, bdiOpen); + fmt.insert(fmt.length(), bdiClose); + } + break; // End of 2iv. + // 2v. Else: + default: + // 2v(a). In the formatted output, prefix fmt with U+2068 FIRST STRONG ISOLATE and postfix it with U+2069 POP DIRECTIONAL ISOLATE. + if (bidiIsolationStyle == U_MF_BIDI_STYLE_CONTROL) { + fmt.insert(0, FSI_CHAR); + fmt.insert(fmt.length(), PDI_CHAR); + } else { + fmt.insert(0, bdiOpen); + fmt.insert(fmt.length(), bdiClose); + } + break; // End of 2v + } // `fmt` now contains the isolated string + return &fmt; +} + +U_NAMESPACE_END + +#endif // #if SHOW_CPLUSPLUS_API + diff --git a/deps/icu-small/source/common/ubidi_props_data.h b/deps/icu-small/source/common/ubidi_props_data.h index 90d1fba117e5..9e3817d9c709 100644 --- a/deps/icu-small/source/common/ubidi_props_data.h +++ b/deps/icu-small/source/common/ubidi_props_data.h @@ -9,445 +9,443 @@ #ifdef INCLUDED_FROM_UBIDI_PROPS_C -static const UVersionInfo ubidi_props_dataVersion={0x11,0,0,0}; +static const UVersionInfo ubidi_props_dataVersion={0x12,0,0,0}; -static const int32_t ubidi_props_indexes[UBIDI_IX_TOP]={0x10,0x703c,0x68a8,0x28,0x620,0x8cc,0x10ac0,0x10ec8,0,0,0,0,0,0,0,0x6902b6}; +static const int32_t ubidi_props_indexes[UBIDI_IX_TOP]={0x10,0x7058,0x6898,0x2a,0x620,0x8c9,0x10ac0,0x10eef,0,0,0,0,0,0,0,0x7302b6}; -static const uint16_t ubidi_props_trieIndex[13388]={ -0x395,0x39d,0x3a5,0x3ad,0x3c5,0x3cd,0x3d5,0x3dd,0x3b5,0x3bd,0x3b5,0x3bd,0x3b5,0x3bd,0x3b5,0x3bd, -0x3b5,0x3bd,0x3b5,0x3bd,0x3e3,0x3eb,0x3f3,0x3fb,0x403,0x40b,0x407,0x40f,0x417,0x41f,0x41a,0x422, -0x3b5,0x3bd,0x3b5,0x3bd,0x42a,0x432,0x3b5,0x3bd,0x3b5,0x3bd,0x3b5,0x3bd,0x438,0x440,0x448,0x450, -0x458,0x460,0x468,0x470,0x476,0x47e,0x486,0x48e,0x496,0x49e,0x4a4,0x4ac,0x4b4,0x4bc,0x4c4,0x4cc, -0x4d8,0x4d4,0x4e0,0x4e8,0x4f0,0x500,0x507,0x4f8,0x50f,0x511,0x519,0x521,0x529,0x52a,0x532,0x53a, -0x542,0x52a,0x54a,0x54f,0x542,0x52a,0x557,0x55f,0x529,0x567,0x56f,0x521,0x577,0x3b5,0x57f,0x583, -0x58b,0x58d,0x595,0x59d,0x529,0x5a5,0x5ad,0x521,0x42c,0x5b1,0x532,0x521,0x529,0x3b5,0x5b9,0x3b5, -0x3b5,0x5bf,0x5c7,0x3b5,0x3b5,0x5cb,0x5d3,0x3b5,0x5d7,0x5de,0x3b5,0x5e6,0x5ee,0x5f5,0x576,0x3b5, -0x3b5,0x5fd,0x605,0x60d,0x615,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x61d,0x3b5,0x625,0x3b5,0x3b5,0x3b5, -0x62d,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x635,0x3b5,0x3b5,0x3b5,0x63d,0x536,0x536,0x536,0x3b5,0x643,0x64b,0x625, -0x661,0x653,0x653,0x669,0x670,0x659,0x3b5,0x3b5,0x3b5,0x678,0x680,0x3b5,0x3b5,0x3b5,0x682,0x68a, -0x692,0x3b5,0x699,0x6a1,0x3b5,0x6a9,0x6b6,0x6ae,0x566,0x6be,0x577,0x6c6,0x42c,0x6ce,0x3b5,0x6d5, -0x3b5,0x6da,0x3b5,0x3b5,0x3b5,0x3b5,0x6e0,0x6e8,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x403,0x403, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x6ef,0x6f7,0x6fb, -0x713,0x719,0x703,0x70b,0x721,0x729,0x72d,0x5f8,0x735,0x73d,0x745,0x3b5,0x74d,0x68a,0x68a,0x68a, -0x75d,0x765,0x76d,0x775,0x77a,0x782,0x78a,0x755,0x792,0x79a,0x3b5,0x7a0,0x7a7,0x68a,0x68a,0x68a, -0x68a,0x79d,0x7ad,0x68a,0x7b5,0x3b5,0x3b5,0x687,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a, -0x68a,0x68a,0x68a,0x68a,0x68a,0x7bd,0x68a,0x68a,0x68a,0x68a,0x68a,0x7c3,0x68a,0x68a,0x7cb,0x7d3, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x68a,0x68a,0x68a,0x68a,0x7e3,0x7eb,0x7f3,0x7db, -0x803,0x80b,0x813,0x81a,0x821,0x829,0x82d,0x7fb,0x68a,0x68a,0x68a,0x835,0x68a,0x68a,0x68a,0x83b, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x843,0x3b5,0x3b5,0x3b5,0x84b,0x3b5,0x3b5,0x3b5,0x403, -0x853,0x85b,0x85e,0x3b5,0x866,0x68a,0x68a,0x68d,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x86d,0x873, -0x883,0x87b,0x3b5,0x3b5,0x88b,0x62d,0x3b5,0x3dc,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x68a,0x893, -0x3ea,0x3b5,0x873,0x897,0x3b5,0x89f,0x8a7,0x3b5,0x3b5,0x3b5,0x3b5,0x8ab,0x3b5,0x3b5,0x682,0x3db, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x68a,0x68a, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x873,0x68a,0x5a3,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x8b2,0x3b5,0x3b5,0x8b7,0x8bf,0x3b5,0x3b5,0x5d9,0x68a,0x681,0x3b5,0x3b5,0x8c7,0x3b5,0x3b5,0x3b5, -0x8cf,0x8d6,0x653,0x8de,0x3b5,0x3b5,0x5af,0x8e6,0x3b5,0x8ee,0x8f5,0x3b5,0x50f,0x8fa,0x3b5,0x528, -0x3b5,0x902,0x90a,0x52a,0x3b5,0x90e,0x529,0x916,0x3b5,0x3b5,0x3b5,0x91c,0x3b5,0x3b5,0x3b5,0x923, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x937,0x92b,0x92f,0x4b4,0x4b4,0x4b4,0x93f,0x4b4, -0x4b4,0x4b4,0x4b4,0x4b4,0x4b4,0x4b4,0x4b4,0x4b4,0x4b4,0x944,0x94c,0x4b4,0x950,0x4b4,0x956,0x95a, -0x962,0x96a,0x96e,0x976,0x4b4,0x4b4,0x4b4,0x97a,0x982,0x3a5,0x98a,0x992,0x3b5,0x3b5,0x3b5,0x99a, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0xed4,0xed4,0xf14,0xf54,0xed4,0xed4,0xed4,0xed4,0xed4,0xed4,0xf8c,0xfcc,0x100c,0x101c,0x105c,0x1068, -0xed4,0xed4,0x10a8,0xed4,0xed4,0xed4,0x10e0,0x1120,0x1160,0x11a0,0x11d8,0x1218,0x1258,0x1290,0x12d0,0x1310, +static const uint16_t ubidi_props_trieIndex[13380]={ +0x394,0x39c,0x3a4,0x3ac,0x3c4,0x3cc,0x3d4,0x3dc,0x3b4,0x3bc,0x3b4,0x3bc,0x3b4,0x3bc,0x3b4,0x3bc, +0x3b4,0x3bc,0x3b4,0x3bc,0x3e2,0x3ea,0x3f2,0x3fa,0x402,0x40a,0x406,0x40e,0x416,0x41e,0x419,0x421, +0x3b4,0x3bc,0x3b4,0x3bc,0x429,0x431,0x3b4,0x3bc,0x3b4,0x3bc,0x3b4,0x3bc,0x437,0x43f,0x447,0x44f, +0x457,0x45f,0x467,0x46f,0x475,0x47d,0x485,0x48d,0x495,0x49d,0x4a3,0x4ab,0x4b3,0x4bb,0x4c3,0x4cb, +0x4d7,0x4d3,0x4df,0x4e7,0x4ef,0x4ff,0x506,0x4f7,0x50e,0x510,0x518,0x520,0x528,0x529,0x531,0x539, +0x541,0x529,0x549,0x54e,0x541,0x529,0x556,0x55e,0x528,0x566,0x56e,0x520,0x576,0x3b4,0x57e,0x582, +0x58a,0x58c,0x594,0x59c,0x528,0x5a4,0x5ac,0x520,0x42b,0x5b0,0x531,0x520,0x528,0x3b4,0x5b8,0x3b4, +0x3b4,0x5be,0x5c6,0x3b4,0x3b4,0x5ca,0x5d2,0x3b4,0x5d6,0x5dd,0x3b4,0x5e5,0x5ed,0x5f4,0x575,0x3b4, +0x3b4,0x5fc,0x604,0x60c,0x614,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x61c,0x3b4,0x624,0x3b4,0x3b4,0x3b4, +0x62c,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x634,0x3b4,0x3b4,0x3b4,0x63c,0x535,0x535,0x535,0x3b4,0x642,0x64a,0x624, +0x660,0x652,0x652,0x668,0x66f,0x658,0x3b4,0x3b4,0x3b4,0x677,0x67f,0x3b4,0x3b4,0x3b4,0x681,0x689, +0x691,0x3b4,0x698,0x6a0,0x3b4,0x6a8,0x402,0x5f7,0x565,0x6b0,0x6b8,0x6be,0x42b,0x6c6,0x3b4,0x6cd, +0x3b4,0x6d2,0x3b4,0x3b4,0x3b4,0x3b4,0x6d8,0x6e0,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x402,0x402, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x6e7,0x6ef,0x6f3, +0x70b,0x711,0x6fb,0x703,0x719,0x721,0x725,0x5f7,0x72d,0x735,0x73d,0x3b4,0x745,0x689,0x689,0x689, +0x755,0x75d,0x765,0x76d,0x772,0x77a,0x782,0x74d,0x78a,0x792,0x3b4,0x798,0x79f,0x689,0x689,0x689, +0x689,0x795,0x7a5,0x689,0x7ad,0x3b4,0x3b4,0x686,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689, +0x689,0x689,0x689,0x689,0x689,0x7b5,0x689,0x689,0x689,0x689,0x689,0x7bb,0x689,0x689,0x7c3,0x7cb, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x689,0x689,0x689,0x689,0x7db,0x7e3,0x7eb,0x7d3, +0x7fb,0x803,0x80b,0x812,0x819,0x821,0x825,0x7f3,0x689,0x689,0x689,0x82d,0x689,0x689,0x689,0x833, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x83b,0x3b4,0x3b4,0x3b4,0x6b9,0x3b4,0x3b4,0x3b4,0x402, +0x84b,0x853,0x856,0x843,0x85e,0x689,0x689,0x68c,0x689,0x689,0x689,0x689,0x689,0x689,0x865,0x86b, +0x87b,0x873,0x3b4,0x3b4,0x883,0x62c,0x3b4,0x3db,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x689,0x88b, +0x3e9,0x3b4,0x86b,0x88f,0x3b4,0x897,0x89f,0x3b4,0x3b4,0x3b4,0x3b4,0x8a3,0x3b4,0x3b4,0x681,0x3da, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x689,0x689, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x86b,0x689,0x5a2,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x8aa,0x3b4,0x3b4,0x8af,0x8b7,0x3b4,0x3b4,0x5d8,0x689,0x680,0x3b4,0x3b4,0x8bf,0x3b4,0x3b4,0x3b4, +0x8c7,0x8ce,0x652,0x8d6,0x3b4,0x3b4,0x5ae,0x8de,0x3b4,0x8e6,0x8ed,0x3b4,0x50e,0x8f2,0x3b4,0x527, +0x3b4,0x8fa,0x902,0x529,0x3b4,0x906,0x528,0x90e,0x3b4,0x3b4,0x3b4,0x914,0x3b4,0x3b4,0x3b4,0x91b, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x92f,0x923,0x927,0x4b3,0x4b3,0x4b3,0x937,0x4b3, +0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x93c,0x944,0x4b3,0x948,0x4b3,0x94e,0x952, +0x95a,0x962,0x966,0x96e,0x4b3,0x4b3,0x4b3,0x972,0x97a,0x3a4,0x982,0x98a,0x3b4,0x3b4,0x3b4,0x992, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0xed0,0xed0,0xf10,0xf50,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xf88,0xfc8,0x1008,0x1018,0x1058,0x1064, +0xed0,0xed0,0x10a4,0xed0,0xed0,0xed0,0x10dc,0x111c,0x115c,0x119c,0x11d4,0x1214,0x1254,0x128c,0x12cc,0x130c, 0xa40,0xa80,0xac0,0xaff,0x1a0,0x1a0,0xb3f,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb77,0xba0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xbe0,0x1a0,0xc06,0xc41,0xc81,0xcc1,0xd01,0xd41,0xd81, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xbe0,0x1a0,0xc06,0xc41,0xc81,0xcc1,0xd01,0xd41,0xd80, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, -0xe01,0xe11,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, +0xe00,0xe10,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc1, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x9a2,0x3b5,0x68a,0x68a,0x9aa,0x62d,0x3b5,0x522, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x9b2,0x3b5,0x3b5,0x3b5,0x9b9,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x9c1,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a, -0x9c9,0x9cd,0x44a,0x44a,0x44a,0x44a,0x9dd,0x9d5,0x44a,0x9e5,0x44a,0x44a,0x9ed,0x9f3,0x44a,0x44a, -0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0xa03,0x9fb,0xa13,0xa0b,0x44a,0x44a,0x44a,0x44a, -0x44a,0x44a,0x44a,0xa1b,0x44a,0xa23,0xa2b,0x4b7,0x44a,0xa33,0xa3a,0xa40,0xa48,0xa4c,0xa54,0x44a, -0x529,0xa5c,0xa63,0xa6a,0x42c,0xa72,0x577,0x3b5,0x50f,0xa79,0x3b5,0xa7f,0x42c,0xa84,0xa8c,0x3b5, -0x3b5,0xa91,0x529,0x3b5,0x3b5,0x3b5,0x84b,0xa99,0x42c,0x5b1,0x58c,0xaa0,0x3b5,0xaa6,0xaae,0x542, -0x3b5,0xa5c,0xab6,0x3b5,0x3b5,0xabe,0xac6,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0xaca,0xad2,0x3b5, -0x3b5,0xada,0x58c,0xae2,0x3b5,0xae8,0x3b5,0x3b5,0xaee,0xaf6,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0xafb,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0xb02,0xb0a,0x3b5,0x3b5,0x3b5,0xb0d,0x58c,0xb15, -0xb19,0xb21,0x3b5,0xb28,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0xb30,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0xb34,0x3b5,0x3b5,0xb42,0xb3c,0x3b5,0x3b5,0x3b5,0xb4a,0xaec,0x3b5,0xb52,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x5b3,0x42c,0x9b9,0xab7,0x3b5,0x3b5,0x3b5,0xb5f,0xb5a,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0xb67,0xb6f,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x8bf, -0xb77,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0xb7b,0x3b5,0xb81,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0xa80,0x3b5,0xb87,0x3b5,0x3b5,0xb8f, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x543,0xb97,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x86d,0xb9b,0x68a,0x68a, -0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0xba3,0xbaa,0xbaa,0x403,0xbb2, -0x50e,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0xbba,0xbc2,0xbc8,0x3b5, -0xbce,0x68a,0x68a,0xbd6,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x68a,0x68a,0xbde,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0xbe6,0x3dc,0xbed,0xbf3,0xbe9,0x3d7,0xbf0,0xbe4,0xbfb, -0xbff,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x403,0xc07,0x403,0xc0e,0xc15,0xc1d,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0xc25,0xc2d,0x3b5,0x3b5,0xa80,0x3b5,0x3b5,0x3b5,0x3b5,0xb81,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0xaba,0x3b5,0xc32,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0xc3a,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0xc3f,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0xc47,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0xc4f,0x44a,0xc57,0xc57,0xc5e,0x44a,0x44a,0x44a,0x44a, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xdc0, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x99a,0x3b4,0x689,0x689,0x9a2,0x62c,0x3b4,0x521, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x9aa,0x3b4,0x3b4,0x3b4,0x9b1,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x9b9,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a, +0x9c1,0x9c5,0x44a,0x44a,0x44a,0x44a,0x9d5,0x9cd,0x44a,0x9dd,0x44a,0x44a,0x9e5,0x9eb,0x44a,0x44a, +0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x9fb,0x9f3,0xa0b,0xa03,0x44a,0x44a,0x44a,0x44a, +0x44a,0x44a,0x44a,0xa13,0x44a,0xa1b,0xa2b,0xa23,0x44a,0xa33,0xa3a,0xa40,0xa48,0xa4c,0xa54,0x44a, +0x528,0xa5c,0xa63,0xa6a,0x42b,0xa72,0x576,0x3b4,0x50e,0xa79,0x3b4,0xa7f,0x42b,0xa84,0xa8c,0x3b4, +0x3b4,0xa91,0x528,0x3b4,0x3b4,0x3b4,0x6b9,0xa99,0x42b,0x5b0,0x58b,0xaa0,0x3b4,0x6ba,0xaa5,0x541, +0x3b4,0xa5c,0xaad,0x3b4,0x3b4,0xab5,0xabd,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0xac1,0xac9,0x3b4, +0x3b4,0xad1,0x58b,0xad9,0x3b4,0xadf,0x3b4,0x3b4,0xae5,0xaed,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0xaf2,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0xaf9,0xb01,0x3b4,0x3b4,0x3b4,0xb04,0x58b,0xb0c, +0xb10,0xb18,0x3b4,0xb1f,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0xb27,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0xb2b,0x3b4,0x3b4,0xb39,0xb33,0x3b4,0x3b4,0x3b4,0xb41,0xae3,0x3b4,0xb49,0x3b4,0x3b4,0xb4f,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x5b2,0x42b,0x9b1,0xaae,0x3b4,0x3b4,0x3b4,0xb5c,0xb57,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0xb64,0xb6c,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x8b7, +0xb74,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0xb78,0x3b4,0xb7e,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0xa80,0x3b4,0xb84,0x3b4,0x3b4,0xb8c, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x542,0xb94,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x689,0x689,0x689,0x689,0x689,0x689,0x865,0xb98,0x689,0x689, +0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0xba0,0xbaf,0xba7,0x402,0xbb7, +0x50d,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0xbbf,0x3b4,0xbc6,0xbce,0xbd4,0x3b4, +0xbda,0x689,0x689,0xbe2,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x689,0x689,0xbea,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0xbf2,0x3db,0xbf9,0xbff,0xbf5,0x3d6,0xbfc,0xbf0,0xc07, +0xc0b,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x402,0xc13,0x402,0xc1a,0xc21,0xc29,0x3b4,0x3b4,0xc39,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0xc31,0xc41,0x3b4,0x3b4,0xa80,0x3b4,0x3b4,0x3b4,0x3b4,0xb7e,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0xab1,0x3b4,0xc46,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0xc4e,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0xc53,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0xc5b,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0xc63,0x44a,0xc6b,0xc6b,0xc72,0x44a,0x44a,0x44a,0x44a, 0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a, -0x44a,0x44a,0x44a,0x44a,0x92f,0x4b4,0x4b4,0x44a,0x44a,0x4b4,0x4b4,0xc66,0x44a,0x44a,0x44a,0x44a, -0x44a,0x4b4,0x4b4,0x4b4,0x4b4,0x4b4,0x4b4,0x4b4,0x950,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a, -0x44a,0x68a,0xc6e,0x68a,0x68a,0x68d,0xc73,0xc77,0x86d,0xc7f,0x3d7,0x3b5,0xc85,0x3b5,0xc8a,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x79e,0x3b5,0x3b5,0x3b5,0x3b5,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a, -0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a, -0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0xc92,0x9aa,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0xc99, -0xca1,0xc6e,0x68a,0xca9,0x68a,0xcb1,0xcb6,0xcbe,0x3b5,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a, -0x68a,0x68a,0x68a,0x68c,0xcc6,0xcce,0x68a,0xcd5,0xcdd,0x68a,0x68a,0x68a,0x68a,0xce5,0x68a,0x68a, -0xcea,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0xcf1,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5,0x3b5, -0xcf1,0xd01,0xcf9,0xcf9,0xcf9,0xd02,0xd02,0xd02,0xd02,0x403,0x403,0x403,0x403,0x403,0x403,0x403, -0xd0a,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02, -0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02, -0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02, -0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02, -0xd02,0x394,0x394,0x394,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,8,7,8, -9,7,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -7,7,7,8,9,0xa,0xa,4,4,4,0xa,0xa,0x310a,0xf20a,0xa,3, -6,3,6,6,2,2,2,2,2,2,2,2,2,2,6,0xa, -0x500a,0xa,0xd00a,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x510a, -0xa,0xd20a,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x510a, -0xa,0xd20a,0xa,0x12,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x12,0x12,0x12,0x12,0x12,7,0x12,0x12,0x12,0x12,0x12,0x12, +0x44a,0x44a,0x44a,0x44a,0x927,0x4b3,0x4b3,0x44a,0x44a,0x4b3,0x4b3,0xc7a,0x44a,0x44a,0x44a,0x44a, +0x44a,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x948,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a, +0x44a,0x689,0xc82,0x689,0x689,0x68c,0xc87,0xc8b,0x865,0xc93,0x3d6,0x3b4,0xc99,0x3b4,0xc9e,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x796,0x3b4,0x3b4,0x3b4,0x3b4,0x689,0x689,0x689,0x689,0x689,0x689,0x689, +0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689, +0x689,0x689,0x689,0x689,0x689,0x689,0x689,0xba8,0x9a2,0x689,0x689,0x689,0x689,0x689,0x689,0xca6, +0xc82,0x689,0xcae,0x689,0xcb6,0xcbb,0xcc3,0x3b4,0x689,0x689,0x689,0x689,0x689,0x689,0x689,0x689, +0x689,0x689,0x68b,0xccb,0x689,0x689,0xcd3,0xcdb,0x689,0x689,0x689,0x689,0xce3,0x689,0x689,0xce8, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0xcef, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4, +0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0xcef, +0xcff,0xcf7,0xcf7,0xcf7,0xd00,0xd00,0xd00,0xd00,0x402,0x402,0x402,0x402,0x402,0x402,0x402,0xd08, +0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00, +0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00, +0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00, +0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00,0xd00, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,8,7,8,9,7,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,7,7,7,8, +9,0xa,0xa,4,4,4,0xa,0xa,0x310a,0xf20a,0xa,3,6,3,6,6, +2,2,2,2,2,2,2,2,2,2,6,0xa,0x500a,0xa,0xd00a,0xa, +0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x510a,0xa,0xd20a,0xa,0xa, +0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x510a,0xa,0xd20a,0xa,0x12, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x12,0x12,0x12,0x12,0x12,7,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,6,0xa,4,4,4,4,0xa,0xa,0xa,0xa,0,0x900a, -0xa,0xb2,0xa,0xa,4,4,2,2,0xa,0,0xa,0xa,0xa,2,0,0x900a, -0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xa,0,0,0,0, +6,0xa,4,4,4,4,0xa,0xa,0xa,0xa,0,0x900a,0xa,0xb2,0xa,0xa, +4,4,2,2,0xa,0,0xa,0xa,0xa,2,0,0x900a,0xa,0xa,0xa,0xa, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xa,0,0,0,0, +0,0,0,0,0,0,0,0xa,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xa,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0xa,0xa,0,0,0,0,0,0,0,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0, -0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xb1,0xb1,0xb1,0xb1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0xa,0xa,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0, -0xa,0xa,0,0,0,0,0,0,0,0,0xa,0,0,0,0,0, -0xa,0xa,0,0xa,0,0,0,0,0,0,0,0,0,0,0,0, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0xa,0xa,0,0, +0,0,0,0,0,0,0xa,0,0,0,0,0,0xa,0xa,0,0xa, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0xa,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xa,0,0,0xa,0xa,4, -1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xa,0,0,0xa,0xa,4,1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,1,0xb1, -1,0xb1,0xb1,1,0xb1,0xb1,1,0xb1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,1,0xb1,1,0xb1,0xb1,1, +0xb1,0xb1,1,0xb1,0xb1,0xb1,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, -5,5,5,5,5,5,0xa,0xa,0xd,4,4,0xd,6,0xd,0xa,0xa, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0x8ad,0xd,0xd,0xd, -0x4d,0xd,0x8d,0x8d,0x8d,0x8d,0x4d,0x8d,0x4d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d, -0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, -0x2d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -5,5,5,5,5,5,5,5,5,5,4,5,5,0xd,0x4d,0x4d, -0xb1,0x8d,0x8d,0x8d,0xd,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, -0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, -0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5, +5,5,0xa,0xa,0xd,4,4,0xd,6,0xd,0xa,0xa,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0x8ad,0xd,0xd,0xd,0x4d,0xd,0x8d,0x8d, +0x8d,0x8d,0x4d,0x8d,0x4d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x4d, +0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x2d,0x4d,0x4d,0x4d, +0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,5,5,5,5, +5,5,5,5,5,5,4,5,5,0xd,0x4d,0x4d,0xb1,0x8d,0x8d,0x8d, +0xd,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d, +0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x4d,0x4d, 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, -0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x8d, -0x8d,0x8d,0x8d,0x8d,0x4d,0x8d,0x4d,0x8d,0x4d,0x4d,0x8d,0x8d,0xd,0x8d,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,5,0xa,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0xb1, -0xb1,0xa,0xb1,0xb1,0xb1,0xb1,0x8d,0x8d,2,2,2,2,2,2,2,2, -2,2,0x4d,0x4d,0x4d,0xd,0xd,0x4d,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xad,0x8d,0xb1,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d, -0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, -0x8d,0x4d,0x8d,0x4d,0x8d,0x4d,0x4d,0x8d,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0x8d,0x4d,0x4d, -0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d, -0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d, -0x4d,0x8d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, +0x4d,0x8d,0x4d,0x8d,0x4d,0x4d,0x8d,0x8d,0xd,0x8d,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,5,0xa,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0xb1,0xb1,0xa,0xb1,0xb1, +0xb1,0xb1,0x8d,0x8d,2,2,2,2,2,2,2,2,2,2,0x4d,0x4d, +0x4d,0xd,0xd,0x4d,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, +0xd,0xd,0xd,0xad,0x8d,0xb1,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x8d,0x4d,0x4d, +0x4d,0x4d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x8d,0x4d, +0x8d,0x4d,0x4d,0x8d,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x8d, +0x8d,0x4d,0x4d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0xd,0xd,0xd,0xd, 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xd,0xd,0xd,0xd,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -1,1,1,1,1,1,1,1,1,1,0x41,0x41,0x41,0x41,0x41,0x41, +0xd,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0xd, +0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,1,1,1,1, +1,1,1,1,1,1,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, -0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,1,1,0xa,0xa,0xa,0xa,0x21,1,1,0xb1,1,1, -0xb1,0xb1,0xb1,0xb1,1,0xb1,0xb1,0xb1,1,0xb1,0xb1,0xb1,0xb1,0xb1,1,1, +0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +1,1,0xa,0xa,0xa,0xa,0x21,1,1,0xb1,1,1,0xb1,0xb1,0xb1,0xb1, +1,0xb1,0xb1,0xb1,1,0xb1,0xb1,0xb1,0xb1,0xb1,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,0xb1,0xb1,0xb1,0xb1,1,0xb1,0xb1,0xb1,0xb1,0xb1, -0x81,0x41,0x41,0x41,0x41,0x41,0x81,0x81,0x41,0x81,0x41,0x41,0x41,0x41,0x41,0x41, -0x41,0x41,0x41,0x41,0x81,0x41,0x81,0x81,0x81,0xb1,0xb1,0xb1,1,1,1,1, -0x4d,0xd,0x4d,0x4d,0x4d,0x4d,0xd,0x8d,0x4d,0x8d,0x8d,0xd,0xd,0xd,0xd,0xd, -0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, -0x8d,0x8d,0x8d,0x2d,0x2d,0x2d,0x4d,0xd,0xd,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d, -5,5,0xd,0xd,0xd,0xd,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,5,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +1,1,0xb1,0xb1,0xb1,0xb1,1,0xb1,0xb1,0xb1,0xb1,0xb1,0x81,0x41,0x41,0x41, +0x41,0x41,0x81,0x81,0x41,0x81,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, +0x81,0x41,0x81,0x81,0x81,0xb1,0xb1,0xb1,1,1,1,1,0x4d,0xd,0x4d,0x4d, +0x4d,0x4d,0xd,0x8d,0x4d,0x8d,0x8d,0xd,0xd,0xd,0xd,0xd,0x8d,0x8d,0x8d,0x8d, +0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x2d, +0x2d,0x2d,0x4d,0xd,0xd,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,5,5,0xd,0xd, +0xd,0xd,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,5,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0xd,0x8d,0x4d, -0x4d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, -0x4d,0x4d,0x4d,0x4d,0x4d,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0x4d,0x4d,0x4d,0x4d, +0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0xd,0x8d,0x4d,0x4d,0x8d,0x8d,0x4d, +0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0, -0xb1,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0, -0,0xb1,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0, -0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0xb1,0,0xb1,0,0,0, +0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0xb1,0,0, +0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0, +0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0, +0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xb1,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0, -0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0, +0xb1,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0, +0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,4, +0,0,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0xb1,0xb1,0,0,0,0,0xb1,0xb1,0,0,0xb1, +0xb1,0xb1,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0xb1,0,0, +0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1, +0xb1,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0, -0,0,0,4,0,0,0xb1,0,0,0xb1,0xb1,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0xb1, -0xb1,0,0,0xb1,0xb1,0xb1,0,0,0,0xb1,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0, -0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1, -0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0xb1,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1, -0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, -0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xb1,0,0,0xb1,0,0xb1,0xb1,0xb1, -0xb1,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0,0, -0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0xb1,0, +0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0, +0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0, -0,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xa, -0xa,0xa,0xa,0xa,0xa,4,0xa,0,0,0,0,0,0xb1,0,0,0, -0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xb1,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,0,0,0, +0,0,0,0,0,0xb1,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0, +0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xb1,0,0xb1,0xb1,0xb1,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0xb1, -0xb1,0xb1,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0, -0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0, +0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa, +0xa,4,0xa,0,0,0,0,0,0xb1,0,0,0,0xb1,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0xb1,0xb1, +0xb1,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0,0, +0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0, +0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0xa0, +0,0,0,0,0,0,0xa0,0,0,0,0,0,0xb1,0xb1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0, +0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0, +0,0,0xb1,0xb1,0xb1,0,0xb1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0,0,0,0,4,0,0,0,0,0,0,0,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xb1,0,0,0xa0,0,0,0,0,0,0,0xa0,0,0,0,0,0, 0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1, -0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0, -0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,4,0,0,0,0, -0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0, -0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0xb1, -0,0xb1,0x310a,0xf20a,0x310a,0xf20a,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1, +0,0,0,0,0,0,0,0,0,0xb1,0,0xb1,0,0xb1,0x310a,0xf20a, +0x310a,0xf20a,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0, +0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1, +0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0xb1,0xb1,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0xb1,0xb1, 0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0, -0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0, -0,0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xb1,0,0,0xb1,0xb1,0,0,0,0,0, -0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0, +0,0,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0,0xb1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0, -0,0,0,0,0xa,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,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,0x310a, -0xf20a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0, +0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0, -0,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0,0,0,0,0,0,0,4,0,0xb1,0,0,0x40,0x40,0x40,0x40, -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xb1,0x40,0, +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,0x310a,0xf20a,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x4a,0xa,0xa,0x2a,0xb1, -0xb1,0xb1,0x12,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0,0,0, -0,0,0,0,0,0xb1,0xb1,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, +0,0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0xb1,0, +0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0, +0,0,0,4,0,0xb1,0,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, -0xb1,0xb1,0xb1,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0, -0,0,0xb1,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0,0,0, -0xa,0,0,0,0xa,0xa,0,0,0,0,0,0,0,0,0,0, +0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xb1,0x40,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x4a,0xa,0xa,0x2a,0xb1,0xb1,0xb1,0x12,0xb1, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, +0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0,0,0,0,0,0,0, +0,0xb1,0xb1,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, +0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xb1,0xb1,0xb1,0, +0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0xb1,0, +0,0,0,0,0,0xb1,0xb1,0xb1,0,0,0,0,0xa,0,0,0, +0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1, -0xb1,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0,0xb1,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0xb1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, +0xb1,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0, +0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0xb1,0xb1, -0xb1,0xb1,0xb1,0,0xb1,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xa0,0,0xa0,0,0,0, +0,0,0xa0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0, 0xb1,0xb1,0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0, @@ -471,7 +469,7 @@ static const uint16_t ubidi_props_trieIndex[13388]={ 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,9,7,0x8ab,0x8ae, 0x8b0,0x8ac,0x8af,6,4,4,4,4,4,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa, 0xa,0xa,0xa,0xa,2,2,2,2,2,2,2,2,2,2,3,3, -0xa,0x310a,0xf20a,0,0,0,0,0,0,0,0,0,0,0,0,0, +0xa,0x310a,0xf20a,0xa,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,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,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, @@ -487,7 +485,7 @@ static const uint16_t ubidi_props_trieIndex[13388]={ 0x300a,0xf00a,0xa,0xa,0x300a,0xf00a,0x900a,0x900a,0x900a,0x100a,0x900a,0x900a,0x100a,0x100a,0x900a,0x900a, 0x900a,0x900a,0x900a,0x100a,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,0x700a,0x700a,0x700a,0xb00a, 0xb00a,0xb00a,0xa,0xa,0xa,0x100a,3,4,0xa,0x900a,0x100a,0xa,0xa,0xa,0x100a,0x100a, -0x100a,0x100a,0xa,0x900a,0x900a,0x900a,0x900a,0xa,0x900a,0xa,0x100a,0xa,0xa,0xa,0xa,0x100a, +0x100a,0x900a,0xa,0x900a,0x900a,0x900a,0x900a,0xa,0x900a,0xa,0x100a,0xa,0xa,0xa,0xa,0x100a, 0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0x100a,0xa,0x100a, 0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x100a,0x900a,0x100a,0x900a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a, 0x900a,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa, @@ -544,9 +542,9 @@ static const uint16_t ubidi_props_trieIndex[13388]={ 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x900a,0xa,0,0,0,0, 0,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0xb1,0xb1,0xb1,0,0, -0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0, +0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0xa,0xa,0x300a,0xf00a, +0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0x300a,0xf00a, 0x300a,0xf00a,0xa,0xa,0xa,0x300a,0xf00a,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0x300a,0xf00a,0x310a,0xf20a, 0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, @@ -664,9 +662,11 @@ static const uint16_t ubidi_props_trieIndex[13388]={ 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,1,1,1,1,1, 1,1,1,1,1,1,1,0xb1,0xb1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,0xd,0xd,0x8d,0x4d, -0x4d,0xd,0x4d,0x4d,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xd,0xd,0xd,0xd,0xd,0xd,0xd,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,0x6d,0x6d,0x6d,0x6d, +0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0xd,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0x8d,0x4d, +0x4d,0xd,0x4d,0x4d,0xd,0xd,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,0x4d,0x4d,0x4d,0x8d, 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0xd,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0x4d,0x4d,0x4d,0x8d,0xd,0xd,0xd, @@ -696,75 +696,78 @@ static const uint16_t ubidi_props_trieIndex[13388]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0, 0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0, +0,0,0xb1,0,0xb1,0,0xb1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xb1,0,0xb1,0,0xb1,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0, +0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0, +0,0,0,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0,0xb1,0,0,0,0,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0, +0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0, +0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0, -0,0,0,0,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0, +0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, +0,0xb1,0,0xb1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0,0,0xb1,0,0xb1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0xb1,0,0, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0,0,0,0,0,0,0,0, +0,0xb1,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0xb1,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0,0xb1, -0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xb1,0xb1,0,0xb1,0,0,0,0,0xb1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1, -0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa0,0xa0,0xb1,0xb1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1, -0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0xb1,0,0,0,0, -0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1, -0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0, -0xb1,0,0xb1,0xb1,0xb1,0,0xb1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xa0, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, -0,0,0xb1,0,0xb1,0xb1,0,0xb1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0xb1,0,0xb1, -0,0,0,0,0,0,0,0,4,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1, +0xb1,0,0xb1,0,0,0,0,0xb1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0, +0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa0,0xa0,0xb1,0xb1,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,4,4,4,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xa0,0xa0,0xa0,0xa0, -0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xb1,0,0,0, -0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0xb1,0xb1,0xb1,0,0,0,0, +0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0, +0,0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0, +0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0,0,0,0, +0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0xb1,0,0xb1,0xb1, +0xb1,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1, -0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0, -0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xb2,0xb2,0xb2,0xb2, +0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xa0,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1, +0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0xb1,0, +0xb1,0xb1,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xb1,0xb1,0,0,0,0xb1,0,0xb1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,4,4,4, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2, -2,2,2,2,2,2,0xa,0xa,0xa,0,0,0,0xa,0xa,0xa,0xa, +0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0, +0xb1,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0xb1,0xb1,0xb1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1, +0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0xa,0,0xb1,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0xb2,0xb2,0xb2,0xb2,0,0,0,0,0,0,0,0,0,0,0,0, +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,0xa,0xa,0xa,0,0,0, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0xb1, +0xa,0xa,0xa,0xa,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa, +0xa,0,0,0,0,0,0,0,0,0x100a,0x100a,0x100a,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0, +0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1, 0xb1,0xb1,0,0,0,0,0,0,0,0,0,0xb2,0xb2,0xb2,0xb2,0xb2, 0xb2,0xb2,0xb2,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, @@ -773,7 +776,7 @@ static const uint16_t ubidi_props_trieIndex[13388]={ 0,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0xa,0xa,0xb1,0xb1,0xb1,0xa,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0,0,0,0xb1,0xb1,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0, 0,0,0,0,0,0,0,0,0,0xa,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -793,7 +796,9 @@ static const uint16_t ubidi_props_trieIndex[13388]={ 0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0, +0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x100a,0x300a,0xf00a,0xa,0xa, +0xa,0xa,0xa,0xa,0x900a,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0x100a, +0xa,0,0,0,0xb1,0xb1,0,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0, @@ -820,46 +825,41 @@ static const uint16_t ubidi_props_trieIndex[13388]={ 0,0,0,0,0,0xa,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0, -0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0,0,0,0,0xa,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0, -0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0, -0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0, -0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0,0,0,0,0xa,0xa,0,0,0,0,0,0, +0xa,0xa,0,0xa,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, 0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0,0,0, -0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0, -0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0, -0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,2,2,2,2,2,2,2,2, -2,2,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0, +0xa,0xa,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0xa,0xa,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0,0xa,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +2,2,2,2,2,2,2,2,2,2,0xa,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x12,0x12,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2, +0,0,0,0,0,0,0,0,0,0,0x12,0x12,0xb2,0xb2,0xb2,0xb2, 0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2, -0xb2,0xb2,0xb2,0xb2,0x12,0xb2,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, +0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0x12,0xb2,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0,0,0,0 +0,0,0,0 }; -static const uint32_t ubidi_props_mirrors[40]={ -0x2000ab,0xbb,0x4202215,0x4e0221f,0x3e02220,0x3a02221,0x3c02222,0x4c02224,0x2202243,0x1402245,0x120224c,0x4002298,0x44022a6,0x48022a8,0x46022a9,0x4a022ab, -0x38022b8,0x10022cd,0x2e022f2,0x30022f3,0x32022f4,0x34022f6,0x36022f7,0x24022fa,0x26022fb,0x28022fc,0x2a022fd,0x2c022fe,0x20027dc,0xa0299b,0xc029a0,0x8029a3, -0x16029b8,0x4029f5,0x1802ade,0x1c02ae3,0x1a02ae4,0x1e02ae5,0xe02aee,0x602bfe +static const uint32_t ubidi_props_mirrors[42]={ +0x2000ab,0xbb,0x4402215,0x520221d,0x500221f,0x4002220,0x3c02221,0x3e02222,0x4e02224,0x2402243,0x1602245,0x140224c,0x4202298,0x46022a6,0x4a022a8,0x48022a9, +0x4c022ab,0x3a022b8,0x12022cd,0x30022f2,0x32022f3,0x34022f4,0x36022f6,0x38022f7,0x26022fa,0x28022fb,0x2a022fc,0x2c022fd,0x2e022fe,0x22027dc,0xc0299b,0xe029a0, +0xa029a3,0x18029b8,0x4029f5,0x1a02ade,0x1e02ae3,0x1c02ae4,0x2002ae5,0x1002aee,0x802bfe,0x61db10 }; -static const uint8_t ubidi_props_jgArray[684]={ +static const uint8_t ubidi_props_jgArray[681]={ 0x68,0,3,3,0x2c,3,0x2d,3,4,0x2a,4,4,0xd,0xd,0xd,6, 6,0x1f,0x1f,0x23,0x23,0x21,0x21,0x28,0x28,1,1,0xb,0xb,0x37,0x37,0x37, 0,9,0x1d,0x13,0x16,0x18,0x1a,0x10,0x2c,0x2d,0x2d,0,0,0,0,0, @@ -902,10 +902,10 @@ static const uint8_t ubidi_props_jgArray[684]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 4,4,0xd,0x28,9,0x1d,0x16,0x18,0x2d,0x2d,0x1f,0x2c,0x39,0,6,0x21, 0xb,0x55,0x1f,1,0x13,0x1d,4,4,4,0x1f,0x2d,0x56,0x58,0x57,4,4, -4,0xd,0xb,1,0x58,0xd,0xd,0x16,0xb,0,0,0 +4,0xd,0xb,1,0x58,0xd,0xd,0x16,0xb }; -static const uint8_t ubidi_props_jgArray2[1032]={ +static const uint8_t ubidi_props_jgArray2[1071]={ 0x3a,0x3c,0x3c,0x40,0x40,0x3d,0,0x52,0,0x54,0x54,0,0,0x41,0x4f,0x53, 0x43,0x43,0x43,0x44,0x3e,0x50,0x45,0x46,0x4c,0x3b,0x3b,0x48,0x48,0x4b,0x49,0x49, 0x49,0x4a,0,0,0x4d,0,0,0,0,0,0,0x47,0x3f,0x4e,0x51,0x42, @@ -970,7 +970,9 @@ static const uint8_t ubidi_props_jgArray2[1032]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,6,0x28,0x13,0,0x69,0x2d +0,0,6,0x28,0x13,0,0x69,0x2d,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0x6b,0x6b,0x6b,0x6b,0x6d,0x6d,0x6d, +0x72,0x72,0x71,0x71,0x73,0x73,0x6a,0x6a,0x6c,0x6c,0x6f,0x70,0x6b,0x6e,0x6b }; static const UBiDiProps ubidi_props_singleton={ @@ -981,16 +983,16 @@ static const UBiDiProps ubidi_props_singleton={ ubidi_props_jgArray2, { ubidi_props_trieIndex, - ubidi_props_trieIndex+3668, + ubidi_props_trieIndex+3664, nullptr, - 3668, - 9720, + 3664, + 9716, 0x1a0, - 0xed4, + 0xed0, 0x0, 0x0, 0x110000, - 0x3448, + 0x3440, nullptr, 0, false, false, 0, nullptr }, { 2,2,0,0 } diff --git a/deps/icu-small/source/common/ubidiimp.h b/deps/icu-small/source/common/ubidiimp.h index e48fc6f94162..4a3b516a9709 100644 --- a/deps/icu-small/source/common/ubidiimp.h +++ b/deps/icu-small/source/common/ubidiimp.h @@ -25,6 +25,20 @@ #include "ubidi_props.h" /* miscellaneous definitions ---------------------------------------------- */ +/* + * Internal option bit for ubidi_writeReordered() and doWriteReverse(): + * Used exclusively by setParaRunsOnly() during Scheme 9 (LOGICAL, RTL => LOGICAL, LTR) + * BidiTransform transformations. When mirroring changes code point length (e.g., U+1DB10 + * contracting back to U+221D), setParaRunsOnly() requires that the temporary visualText + * buffer maintain 1-to-1 code unit synchronization with pBiDi->length (4) to prevent + * array desynchronization in the subsequent ubidi_setPara call. + * + * When this flag is set, doWriteReverse() steps source indices by destination code unit + * length (j += k) instead of original base character length (j += origBaseLen), preserving + * legacy ICU behavior where the trailing surrogate half (which has Bidi class LTR) is copied + * into visualText, allowing ubidi_setPara to correctly split the run for reordering. + */ +#define UBIDI_INTERNAL_RUNS_ONLY 64 // ICU-20853=ICU-20935 Solaris #defines CS and ES in sys/regset.h #ifdef CS @@ -441,7 +455,7 @@ typedef union { /* helper function to (re)allocate memory if allowed */ U_CFUNC UBool -ubidi_getMemory(BidiMemoryForAllocation *pMemory, int32_t *pSize, UBool mayAllocate, int32_t sizeNeeded); +ubidi_getMemory(BidiMemoryForAllocation *pMemory, int32_t *pSize, UBool mayAllocate, size_t sizeNeeded); /* helper macros for each allocated array in UBiDi */ #define getDirPropsMemory(pBiDi, length) \ diff --git a/deps/icu-small/source/common/ubidiln.cpp b/deps/icu-small/source/common/ubidiln.cpp index 65e1212c7b26..df9d1165096a 100644 --- a/deps/icu-small/source/common/ubidiln.cpp +++ b/deps/icu-small/source/common/ubidiln.cpp @@ -258,8 +258,8 @@ ubidi_getLevelAt(const UBiDi *pBiDi, int32_t charIndex) { } } -U_CAPI const UBiDiLevel * U_EXPORT2 -ubidi_getLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) { +U_CAPI const UBiDiLevel* U_EXPORT2 +ubidi_getLevels(UBiDi* pBiDi, UErrorCode* pErrorCode) { int32_t start, length; RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrorCode, nullptr); @@ -544,7 +544,7 @@ static int32_t getRunFromLogicalIndex(UBiDi *pBiDi, int32_t logicalIndex) { * negative number of BiDi control characters within this run. */ U_CFUNC UBool -ubidi_getRuns(UBiDi *pBiDi, UErrorCode*) { +ubidi_getRuns(UBiDi *pBiDi, UErrorCode* pErrorCode) { /* * This method returns immediately if the runs are already set. This * includes the case of length==0 (handled in setPara).. @@ -607,6 +607,7 @@ ubidi_getRuns(UBiDi *pBiDi, UErrorCode*) { if(getRunsMemory(pBiDi, runCount)) { runs=pBiDi->runsMemory; } else { + *pErrorCode = U_MEMORY_ALLOCATION_ERROR; return false; } diff --git a/deps/icu-small/source/common/ubiditransform.cpp b/deps/icu-small/source/common/ubiditransform.cpp index a39cc3100d2b..e317815882cc 100644 --- a/deps/icu-small/source/common/ubiditransform.cpp +++ b/deps/icu-small/source/common/ubiditransform.cpp @@ -308,17 +308,25 @@ action_mirror(UBiDiTransform *pTransform, UErrorCode *pErrorCode) if (0 == (pTransform->reorderingOptions & UBIDI_DO_MIRRORING)) { return false; } - if (pTransform->destSize < pTransform->srcLength) { - *pErrorCode = U_BUFFER_OVERFLOW_ERROR; - return false; - } do { UBool isOdd = ubidi_getLevelAt(pTransform->pBidi, i) & 1; U16_NEXT(pTransform->src, i, pTransform->srcLength, c); - U16_APPEND_UNSAFE(pTransform->dest, j, isOdd ? u_charMirror(c) : c); + if (isOdd) { + c = u_charMirror(c); + } + uint32_t k = U16_LENGTH(c); + if (j + k <= pTransform->destSize) { + U16_APPEND_UNSAFE(pTransform->dest, j, c); + } else { + j += k; + } } while (i < pTransform->srcLength); - *pTransform->pDestLength = pTransform->srcLength; + *pTransform->pDestLength = j; + if (pTransform->destSize < j) { + *pErrorCode = U_BUFFER_OVERFLOW_ERROR; + return false; + } pTransform->reorderingOptions = UBIDI_REORDER_DEFAULT; return true; } @@ -526,5 +534,5 @@ ubiditransform_transform(UBiDiTransform *pBiDiTransform, pBiDiTransform->srcLength = 0; pBiDiTransform->destSize = 0; } - return U_FAILURE(*pErrorCode) ? 0 : destLength; + return (U_FAILURE(*pErrorCode) && *pErrorCode != U_BUFFER_OVERFLOW_ERROR) ? 0 : destLength; } diff --git a/deps/icu-small/source/common/ubidiwrt.cpp b/deps/icu-small/source/common/ubidiwrt.cpp index 209b140722cb..d2d60c9211a9 100644 --- a/deps/icu-small/source/common/ubidiwrt.cpp +++ b/deps/icu-small/source/common/ubidiwrt.cpp @@ -37,8 +37,7 @@ * ("minimum-length-problem" of UTF-8) * - The BiDi control characters need only one code unit each * - * Further assumptions for all UTFs: - * - u_charMirror(c) needs the same number of code units as c + * Note: Since Unicode 18, u_charMirror(c) may change the number of code units. */ #if defined(UTF_SIZE) && UTF_SIZE==8 # error reimplement ubidi_writeReordered() for UTF-8, see comment above @@ -60,6 +59,10 @@ doWriteForward(const char16_t *src, int32_t srcLength, char16_t *dest, int32_t destSize, uint16_t options, UErrorCode *pErrorCode) { + if (srcLength<=0) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return 0; + } /* optimize for several combinations of options */ switch(options&(UBIDI_REMOVE_BIDI_CONTROLS|UBIDI_DO_MIRRORING)) { case 0: { @@ -78,16 +81,30 @@ doWriteForward(const char16_t *src, int32_t srcLength, /* do mirroring */ int32_t i=0, j=0; UChar32 c; - - if(destSize srcLength) { + return j; + } + /* If mirroring caused code unit contraction (e.g., U+1DB10 contracting to U+221D), + * pad trailing array slots up to srcLength to avoid leaving uninitialized memory. + * If j > 0, repeat the preceding code unit; if j == 0, fallback to 0x0020 (ASCII space). + */ + while(j < srcLength && j < destSize) { + dest[j] = j > 0 ? dest[j - 1] : 0x0020; + j++; + } return srcLength; } case UBIDI_REMOVE_BIDI_CONTROLS: { @@ -116,7 +133,6 @@ doWriteForward(const char16_t *src, int32_t srcLength, } default: { /* remove BiDi control characters and do mirroring */ - int32_t remaining=destSize; int32_t i, j=0; UChar32 c; do { @@ -125,24 +141,18 @@ doWriteForward(const char16_t *src, int32_t srcLength, src+=i; srcLength-=i; if(!IS_BIDI_CONTROL_CHAR(c)) { - remaining-=i; - if(remaining<0) { - *pErrorCode=U_BUFFER_OVERFLOW_ERROR; - - /* preflight the length */ - while(srcLength>0) { - c=*src++; - if(!IS_BIDI_CONTROL_CHAR(c)) { - --remaining; - } - --srcLength; - } - return destSize-remaining; - } c=u_charMirror(c); - U16_APPEND_UNSAFE(dest, j, c); + int32_t charLen = U16_LENGTH(c); + if(j + charLen <= destSize) { + int32_t temp = j; + U16_APPEND_UNSAFE(dest, temp, c); + } + j += charLen; } } while(srcLength>0); + if(destSize < j) { + *pErrorCode = U_BUFFER_OVERFLOW_ERROR; + } return j; } } /* end of switch */ @@ -174,6 +184,11 @@ doWriteReverse(const char16_t *src, int32_t srcLength, int32_t i, j; UChar32 c; + if(srcLength<=0) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return 0; + } + /* optimize for several combinations of options */ switch(options&(UBIDI_REMOVE_BIDI_CONTROLS|UBIDI_DO_MIRRORING|UBIDI_KEEP_BASE_COMBINING)) { case 0: @@ -195,7 +210,7 @@ doWriteReverse(const char16_t *src, int32_t srcLength, i=srcLength; /* collect code units for one base character */ - U16_BACK_1(src, 0, srcLength); + U16_PREV(src, 0, srcLength, c); /* copy this base character */ j=srcLength; @@ -234,74 +249,133 @@ doWriteReverse(const char16_t *src, int32_t srcLength, } while(j0); break; - default: + default: { /* - * With several "complicated" options set, this is the most - * general and the slowest copying of an RTL run. - * We will do mirroring, remove BiDi controls, and - * keep combining characters with their base characters - * as requested. + * Note on UBIDI_INTERNAL_RUNS_ONLY: + * This internal flag is passed exclusively by setParaRunsOnly() in ubidi.cpp during + * Scheme 9 (LOGICAL, RTL => LOGICAL, LTR) BidiTransform transformations. + * When mirroring contracts a code point (e.g., U+1DB10 contracting to U+221D), + * setParaRunsOnly() requires legacy ICU 1-to-1 code unit stepping (j += k) and + * returning destSize (which equals srcLength). This prevents array desynchronization + * between visualLength and pBiDi->length, and allows the trailing surrogate half + * of U+1DB10 (which has Bidi class LTR) to be copied into visualText to split + * the run for reordering. + * + * For all other calls (direct user API calls to ubidi_writeReverse, or normal + * reordering), we use character stepping (j += origBaseLen) and return destLength, + * which correctly handles expansion and contraction without leaking broken surrogates. */ - if(!(options&UBIDI_REMOVE_BIDI_CONTROLS)) { - i=srcLength; - } else { - /* we need to find out the destination length of the run, - which will not include the BiDi control characters */ - int32_t length=srcLength; - char16_t ch; - - i=0; + if(options&UBIDI_INTERNAL_RUNS_ONLY) { + if(!(options&UBIDI_REMOVE_BIDI_CONTROLS)) { + i=srcLength; + } else { + int32_t length=srcLength; + char16_t ch; + i=0; + /* Loop over all code units in the source run to count those that are not Bidi control characters, + * determining the required destination buffer length for preflighting when UBIDI_REMOVE_BIDI_CONTROLS is set. + */ + do { + ch=*src++; + if(!IS_BIDI_CONTROL_CHAR(ch)) { + ++i; + } + } while(--length>0); + src-=srcLength; + } + if(destSize0 && IS_COMBINING(u_charType(c))) { + U16_PREV(src, 0, srcLength, c); + } } - } while(--length>0); - src-=srcLength; - } - - if(destSize0); + if(destSize0 && IS_COMBINING(u_charType(c))) { U16_PREV(src, 0, srcLength, c); } } - if(options&UBIDI_REMOVE_BIDI_CONTROLS && IS_BIDI_CONTROL_CHAR(c)) { - /* do not copy this BiDi control character */ continue; } - /* copy this "user character" */ + int32_t origBaseLen=U16_LENGTH(c); j=srcLength; if(options&UBIDI_DO_MIRRORING) { /* mirror only the base character */ - int32_t k=0; c=u_charMirror(c); - U16_APPEND_UNSAFE(dest, k, c); - dest+=k; - j+=k; + int32_t k=U16_LENGTH(c); + if(destLength+k<=destSize) { + int32_t temp=destLength; + U16_APPEND_UNSAFE(dest, temp, c); + } + destLength+=k; + j+=origBaseLen; } while(j0); - break; - } /* end of switch */ + + if(destSize0 &&*/ runLength > 0 && // doWriteForward may return 0 if src // only include bidi control chars - !(MASK_R_AL&DIRPROP_FLAG(dirProps[logicalStart+runLength-1]))) { + !(MASK_R_AL&DIRPROP_FLAG(dirProps[logicalStart+originalRunLength-1]))) { if(destSize>0) { *dest++=RLM_CHAR; } diff --git a/deps/icu-small/source/common/ubrk.cpp b/deps/icu-small/source/common/ubrk.cpp index 712ce497161c..c2f95c5d7629 100644 --- a/deps/icu-small/source/common/ubrk.cpp +++ b/deps/icu-small/source/common/ubrk.cpp @@ -300,7 +300,7 @@ ubrk_getRuleStatusVec(UBreakIterator *bi, int32_t *fillInVec, int32_t capacity, U_CAPI const char* U_EXPORT2 -ubrk_getLocaleByType(const UBreakIterator *bi, +ubrk_getLocaleByType(const UBreakIterator* bi U_LIFETIME_BOUND, ULocDataLocaleType type, UErrorCode* status) { diff --git a/deps/icu-small/source/common/ucase_props_data.h b/deps/icu-small/source/common/ucase_props_data.h index a34fdd318e35..67462c2b46c9 100644 --- a/deps/icu-small/source/common/ucase_props_data.h +++ b/deps/icu-small/source/common/ucase_props_data.h @@ -9,11 +9,11 @@ #ifdef INCLUDED_FROM_UCASE_CPP -static const UVersionInfo ucase_props_dataVersion={0x11,0,0,0}; +static const UVersionInfo ucase_props_dataVersion={0x12,0,0,0}; -static const int32_t ucase_props_indexes[UCASE_IX_TOP]={0x10,0x7a14,0x69e0,0x688,0x172,0,0,0,0,0,0,0,0,0,0,3}; +static const int32_t ucase_props_indexes[UCASE_IX_TOP]={0x10,0x7cc4,0x6b40,0x69c,0x206,0,0,0,0,0,0,0,0,0,0,3}; -static const uint16_t ucase_props_trieIndex[13544]={ +static const uint16_t ucase_props_trieIndex[13720]={ 0x363,0x36b,0x373,0x37b,0x389,0x391,0x399,0x3a1,0x3a9,0x3b1,0x3b8,0x3c0,0x3c8,0x3d0,0x3d8,0x3e0, 0x3e6,0x3ee,0x3f6,0x3fe,0x406,0x40e,0x416,0x41e,0x426,0x42e,0x436,0x43e,0x446,0x44e,0x456,0x45e, 0x466,0x46e,0x476,0x47e,0x486,0x48e,0x496,0x49e,0x49a,0x4a2,0x4a7,0x4af,0x4b6,0x4be,0x4c6,0x4ce, @@ -99,7 +99,7 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x72a,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x8a0,0x382,0x8a8,0x8ad,0x8b5,0x382,0x382,0x8bd,0x8c5,0x8cd,0x3a9,0x8d2,0x8da,0x8e0,0x8e7,0x8ef, 0x8f7,0x8fe,0x382,0x382,0x382,0x382,0x905,0x90d,0x382,0x915,0x91c,0x382,0x55e,0x921,0x929,0x6be, -0x382,0x92f,0x937,0x93b,0x382,0x943,0x94b,0x953,0x382,0x959,0x95d,0x965,0x975,0x96d,0x382,0x97d, +0x382,0x92f,0x937,0x93b,0x382,0x943,0x94b,0x953,0x382,0x959,0x95f,0x967,0x977,0x96f,0x382,0x97f, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, @@ -139,9 +139,9 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x985,0x382,0x382,0x382,0x382,0x98d,0x55e,0x382, +0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x987,0x382,0x382,0x382,0x382,0x98f,0x55e,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x992,0x99a,0x99e,0x382,0x382,0x382,0x382,0x365,0x36b,0x9a6,0x9ae,0x9b5,0x519,0x382,0x382,0x9bd, +0x994,0x99c,0x9a0,0x382,0x382,0x382,0x382,0x365,0x36b,0x9a8,0x9b0,0x9b7,0x519,0x382,0x382,0x9bf, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0xe0c,0xe0c,0xe24,0xe64,0xea4,0xee0,0xf20,0xf60,0xf98,0xfd8,0x1018,0x1058,0x1098,0x10d8,0x1118,0x1158, @@ -173,61 +173,61 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, 0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, 0xd4b,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x9c4,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x9cc,0x382,0x382,0x382,0x9cf,0x382,0x382,0x382, -0x382,0x9d7,0x9dd,0x9e1,0x382,0x382,0x9e5,0x9e9,0x9ef,0x382,0x382,0x382,0x9f6,0x9fa,0xa02,0x382, -0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xa12,0xa0a,0x382, -0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xa1a, -0xa1e,0x382,0x382,0x382,0x382,0x382,0xa26,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0x382,0x382,0xa2e,0xa32,0xa3a,0xa3e,0x382,0xa45,0xa4a,0xa51,0xa58,0x382,0x382,0x382,0x382, -0x382,0x382,0x382,0x382,0xa5e,0x573,0xa62,0x382,0x382,0xa6a,0x382,0xa72,0x382,0x382,0x382,0x574, -0xa74,0xa7b,0xa7f,0x5f3,0xa87,0xa8f,0x382,0xa97,0xa9e,0x382,0xaa4,0x5f3,0xaa9,0xab1,0x382,0x382, -0xab6,0x574,0x382,0x382,0x382,0x365,0xabe,0x5f3,0x5f5,0xac6,0xacd,0x382,0xa99,0xad5,0x58d,0x382, -0xa74,0xadd,0x382,0x382,0xae5,0xaed,0x382,0x382,0x382,0x382,0x382,0x382,0xaf1,0xaf9,0x382,0x382, -0xb01,0x4dd,0x382,0x382,0xb09,0x382,0x382,0xb0f,0xb17,0x382,0x382,0x382,0x382,0x382,0x382,0xb1c, -0x382,0x382,0x382,0xb24,0xb2c,0x382,0x382,0xb34,0xb3c,0x382,0x382,0x382,0xb3f,0x9cc,0xb47,0xb4b, -0xb53,0x382,0xb5a,0x382,0x382,0x382,0x382,0x382,0x382,0xb62,0x382,0x382,0x382,0x382,0x382,0xb66, -0x382,0x382,0x98d,0xb6e,0x382,0x382,0x382,0xb74,0xb7c,0x382,0xb80,0x382,0x94c,0x382,0x382,0x382, -0x382,0x382,0x382,0x382,0x382,0xb86,0x5f3,0xb8c,0xb94,0x382,0x382,0x382,0x382,0x382,0x382,0x382, +0x9c6,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x9ce,0x382,0x382,0x382,0x9d1,0x382,0x382,0x382, +0x382,0x9d9,0x9df,0x9e3,0x382,0x382,0x9e7,0x9eb,0x9f1,0x382,0x382,0x382,0x9f8,0x9fc,0xa04,0x382, +0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xa14,0xa0c,0x382, +0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xa1c, +0xa20,0x382,0x382,0x382,0x382,0x382,0xa28,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, +0x382,0x382,0x382,0xa30,0xa34,0xa3c,0xa40,0x382,0xa47,0xa4c,0xa53,0xa5a,0x382,0x382,0x382,0x382, +0x382,0x382,0x382,0x382,0xa60,0xa67,0xa6b,0x382,0x382,0xa73,0x382,0xa7b,0x382,0x382,0x382,0x574, +0xa7d,0xa84,0xa88,0x5f3,0xa90,0xa98,0x382,0xaa0,0xaa7,0x382,0xaad,0x5f3,0xab2,0xaba,0x382,0x382, +0xabf,0x574,0x382,0x382,0x382,0x365,0xac7,0x5f3,0x5f5,0xacf,0xad6,0x382,0xaa2,0xade,0x58d,0x382, +0xa7d,0xae6,0x382,0x382,0xaee,0xaf6,0x382,0x382,0x382,0x382,0x382,0x382,0xafa,0xb02,0x382,0x382, +0xb0a,0x4dd,0x382,0x382,0xb12,0x382,0x382,0xb18,0xb20,0x382,0x382,0x382,0x382,0x382,0x382,0xb25, +0x382,0x382,0x382,0xb2d,0xb35,0x382,0x382,0xb3d,0xb45,0x382,0x382,0x382,0xb48,0x9ce,0xb50,0xb54, +0xb5c,0x382,0xb63,0x382,0x382,0x382,0x382,0x382,0x382,0xb6b,0x382,0x382,0x382,0x382,0x382,0xb6f, +0x382,0x382,0x98f,0xb77,0x382,0x382,0x382,0xb7d,0xb85,0x382,0xb89,0x382,0x94c,0x9b7,0x382,0x382, +0x382,0x382,0x382,0x382,0x382,0xb8f,0x5f3,0xb95,0xb9d,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xb9b,0xba3,0x382,0x382,0x382,0x382, +0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xba4,0xbac,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x519,0xbab,0x382,0x382,0x382,0x382,0x382, +0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x519,0xbb4,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0xbaf,0x382,0xbb5,0x5b1,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0x382,0x382,0x382,0x55e,0xb88,0x382,0x382,0x382,0x382,0x382,0x382,0xb24,0xb2c,0x382,0xbbd, -0xbc4,0x382,0x382,0x382,0x6b4,0x382,0xbc9,0x382,0x382,0xbd1,0x382,0x382,0x382,0x382,0x382,0x382, +0x382,0xbb8,0x382,0xbbe,0x5b1,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, +0x382,0x382,0x382,0x382,0x55e,0xb91,0x382,0x382,0x382,0x382,0x382,0x382,0xb2d,0xb35,0x382,0xbc6, +0xbcd,0x382,0x382,0x382,0x6b4,0x382,0xbd2,0x382,0x382,0xbda,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xbd6,0x382,0x382,0x382,0x382,0x382,0x382, +0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xbdf,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xbde,0x5b1, +0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xbe7,0x5b1, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x8c5,0xbe6,0xbed,0x382,0x382,0x382,0x382,0x382, -0x382,0x382,0x382,0x382,0x382,0x382,0xbf4,0xbfc,0xc02,0x382,0x382,0x382,0x382,0xc0a,0x382,0x382, -0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xc12,0xc1a,0xc1f,0xc25,0xc2d, -0xc35,0xc3d,0xc16,0xc45,0xc4d,0xc55,0xc5c,0xc17,0xc12,0xc1a,0xc15,0xc25,0xc18,0xc13,0xc64,0xc16, -0xc6c,0xc74,0xc7c,0xc83,0xc6f,0xc77,0xc7f,0xc86,0xc72,0xc8e,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x8c5,0xc96,0x8c5,0xc9d,0xca4,0xcac, +0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x8c5,0xbef,0xbf6,0x382,0x382,0x382,0x382,0x382, +0x382,0x382,0x382,0x382,0xbfd,0x382,0xc04,0xc0c,0xc12,0x382,0x382,0x382,0x382,0xc1a,0x382,0xc22, +0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xc2a,0xc32,0xc37,0xc3d,0xc45, +0xc4d,0xc55,0xc2e,0xc5d,0xc65,0xc6d,0xc74,0xc2f,0xc2a,0xc32,0xc2d,0xc3d,0xc30,0xc2b,0xc7c,0xc2e, +0xc84,0xc8c,0xc94,0xc9b,0xc87,0xc8f,0xc97,0xc9e,0xc8a,0xca6,0x382,0x382,0x382,0x382,0x382,0x382, +0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x8c5,0xcae,0x8c5,0xcb5,0xcbc,0xcc4, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0x382,0xcbc,0xcc4,0x382,0x382,0x382,0x382,0x382,0x382,0xcb4,0xccc,0xcdf,0xcd2,0xcd7,0x382, -0x382,0x382,0x382,0xce7,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xae1, -0x382,0xa43,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0xcef,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xcf4,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0xcfc,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xd04,0x382,0xd0c,0xd14,0xd1b,0x382, +0x382,0x382,0xccc,0x74e,0xcd4,0xcda,0xce2,0x382,0xce8,0x756,0xcf0,0xcf8,0xd0b,0xcfe,0xd03,0x382, +0x382,0x382,0x382,0xd13,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xaea, +0x382,0xa45,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, +0x382,0xd1b,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xd20,0x382,0x382,0x382,0x382,0x382,0x382, +0x382,0xd28,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xd30,0x382,0xd38,0xd40,0xd47,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0x382,0x382,0x382,0xc0e,0xd23,0xd23,0xd29,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, -0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xa99,0x382,0x382,0x382,0x382,0x382, +0x382,0x382,0x382,0x382,0xc26,0xd4f,0xd4f,0xd55,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, +0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0xaa2,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x574,0x8c5,0x8c5,0x8c5,0x382, -0x382,0x382,0x382,0x8c5,0x8c5,0x8c5,0x8c5,0x8c5,0x8c5,0x8c5,0xd31,0x382,0x382,0x382,0x382,0x382, +0x382,0x382,0x382,0x8c5,0x8c5,0x8c5,0x8c5,0x8c5,0x8c5,0x8c5,0xd5d,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382, 0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x382,0x362,0,0,0,0, @@ -246,62 +246,62 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0,4,0,4,0,0,0,0,4,0x1c9,0,4,4,0,1,0, 0,0,0,0,0x1012,0x1012,0x1012,0x1012,0x1012,0x1fa,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, 0x5a,0x5a,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0,0x1012,0x1012,0x1012,0x1012, -0x1012,0x1012,0x1012,0x239,0xf011,0xf011,0xf011,0xf011,0xf011,0x2d9,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, +0x1012,0x1012,0x1012,0x239,0xf011,0xf011,0xf011,0xf011,0xf011,0x2f9,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, 0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0,0xf011,0xf011,0xf011,0xf011, 0xf011,0xf011,0xf011,0x3c91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x31a,0xff91,0x92,0xff91, -0x92,0xff91,0x31a,0xffb1,0x33a,0x389,0x92,0xff91,0x92,0xff91,0x92,0xff91,1,0x92,0xff91,0x92, -0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x3d9,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x33a,0xff91,0x92,0xff91, +0x92,0xff91,0x33a,0xffb1,0x35a,0x3a9,0x92,0xff91,0x92,0xff91,0x92,0xff91,1,0x92,0xff91,0x92, +0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x3f9,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0xc392,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x459, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0xc392,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x479, 0x6191,0x6912,0x92,0xff91,0x92,0xff91,0x6712,0x92,0xff91,0x6692,0x6692,0x92,0xff91,1,0x2792,0x6512, -0x6592,0x92,0xff91,0x6692,0x6792,0x3091,0x6992,0x6892,0x92,0xff91,0x5191,0x489,0x6992,0x6a92,0x4111,0x6b12, +0x6592,0x92,0xff91,0x6692,0x6792,0x3091,0x6992,0x6892,0x92,0xff91,0x5191,0x4a9,0x6992,0x6a92,0x4111,0x6b12, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x6d12,0x92,0xff91,0x6d12,1,1,0x92,0xff91,0x6d12,0x92, 0xff91,0x6c92,0x6c92,0x92,0xff91,0x92,0xff91,0x6d92,0x92,0xff91,1,0,0x92,0xff91,1,0x1c11, -0,0,0,0,0x4aa,0x4db,0x519,0x54a,0x57b,0x5b9,0x5ea,0x61b,0x659,0x92,0xff91,0x92, +0,0,0,0,0x4ca,0x4fb,0x539,0x56a,0x59b,0x5d9,0x60a,0x63b,0x679,0x92,0xff91,0x92, 0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0xd891,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x689,0x70a,0x73b,0x779,0x92,0xff91,0xcf92,0xe412,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x6a9,0x72a,0x75b,0x799,0x92,0xff91,0xcf92,0xe412,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0xbf12,1,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,1,1,1,1, -1,1,0x7aa,0x92,0xff91,0xae92,0x7ca,0x7e9,0x7e9,0x92,0xff91,0x9e92,0x2292,0x2392,0x92,0xff91, -0x92,0xffb1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x809,0x829,0x849,0x9711,0x9911,1,0x9991,0x9991, -1,0x9b11,1,0x9a91,0x869,1,1,1,0x9991,0x889,1,0x9891,0x8a9,0x8c9,0x8e9,1, -0x97b1,0x9691,0x8e9,0x909,0x929,1,1,0x9691,1,0x949,0x9591,1,1,0x9511,1,1, -1,1,1,1,1,0x969,1,1,0x9311,1,0x989,0x9311,1,1,1,0x9a9, +1,1,0x7ca,0x92,0xff91,0xae92,0x7ea,0x809,0x809,0x92,0xff91,0x9e92,0x2292,0x2392,0x92,0xff91, +0x92,0xffb1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x829,0x849,0x869,0x9711,0x9911,1,0x9991,0x9991, +1,0x9b11,1,0x9a91,0x889,1,1,1,0x9991,0x8a9,1,0x9891,0x8c9,0x8e9,0x909,1, +0x97b1,0x9691,0x909,0x929,0x949,1,1,0x9691,1,0x969,0x9591,1,1,0x9511,1,0x989, +1,1,1,1,0x989,0x9a9,1,1,0x9311,1,0x9c9,0x9311,1,1,1,0x9e9, 0x9311,0xdd91,0x9391,0x9391,0xdc91,1,1,1,1,1,0x9291,1,0,0,1,1, -1,1,1,1,1,0x9c9,0x9e9,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,0xa09,0xa29,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,5,5,0x25,5,5,5,5,5, 5,4,4,4,0x14,4,0x14,4,5,5,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,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,0x54,0x54,0x44,0x44,0x44,0x44,0x44,0xa0c, +4,4,4,4,4,4,4,4,0x54,0x54,0x44,0x44,0x44,0x44,0x44,0xa4c, 0x54,0x44,0x54,0x44,0x54,0x44,0x44,0x44,0x44,0x44,0x44,0x54,0x44,0x64,0x64,0x64, 0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64, 0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x74,0x64,0x64,0x64,0x64,0x64,0x64, -0x64,0x64,0x64,0x64,0x64,0x44,0x44,0x44,0x44,0x44,0x54,0x44,0x44,0xa1d,0x44,0x64, +0x64,0x64,0x64,0x64,0x64,0x44,0x44,0x44,0x44,0x44,0x54,0x44,0x44,0xa5d,0x44,0x64, 0x64,0x64,0x44,0x44,0x44,0x64,0x64,4,0x44,0x44,0x44,0x64,0x64,0x64,0x64,0x44, 0x64,0x64,0x64,0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x92,0xff91,0x92,0xff91,4,4,0x92,0xff91, 0,0,5,0x4111,0x4111,0x4111,0,0x3a12,0,0,0,0,4,4,0x1312,4, -0x1292,0x1292,0x1292,0,0x2012,0,0x1f92,0x1f92,0xa69,0x1012,0xb3a,0x1012,0x1012,0xb7a,0x1012,0x1012, -0xbba,0xc0a,0xc5a,0x1012,0xc9a,0x1012,0x1012,0x1012,0xcda,0xd1a,0,0xd5a,0x1012,0x1012,0xd9a,0x1012, -0x1012,0xdda,0x1012,0x1012,0xed11,0xed91,0xed91,0xed91,0xe19,0xf011,0xee9,0xf011,0xf011,0xf29,0xf011,0xf011, -0xf69,0xfb9,0x1009,0xf011,0x1049,0xf011,0xf011,0xf011,0x1089,0x10c9,0x1109,0x1139,0xf011,0xf011,0x1179,0xf011, -0xf011,0x11b9,0xf011,0xf011,0xe011,0xe091,0xe091,0x412,0x11f9,0x1229,2,2,2,0x1279,0x12a9,0xfc11, +0x1292,0x1292,0x1292,0,0x2012,0,0x1f92,0x1f92,0xaa9,0x1012,0xb7a,0x1012,0x1012,0xbba,0x1012,0x1012, +0xbfa,0xc4a,0xc9a,0x1012,0xcda,0x1012,0x1012,0x1012,0xd1a,0xd5a,0,0xd9a,0x1012,0x1012,0xdda,0x1012, +0x1012,0xe1a,0x1012,0x1012,0xed11,0xed91,0xed91,0xed91,0xe59,0xf011,0xf29,0xf011,0xf011,0xf69,0xf011,0xf011, +0xfa9,0xff9,0x1049,0xf011,0x1089,0xf011,0xf011,0xf011,0x10c9,0x1109,0x1149,0x1179,0xf011,0xf011,0x11b9,0xf011, +0xf011,0x11f9,0xf011,0xf011,0xe011,0xe091,0xe091,0x412,0x1239,0x1269,2,2,2,0x12b9,0x12e9,0xfc11, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x12d9,0x1309,0x391,0xc631,0x133a,0x1389,0,0x92, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x1319,0x1349,0x391,0xc631,0x137a,0x13c9,0,0x92, 0xff91,0xfc92,0x92,0xff91,1,0xbf12,0xbf12,0xbf12,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812, -0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x1012,0x1012,0x13ba,0x1012,0x13fa,0x1012,0x1012,0x1012, -0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x143a,0x1012,0x1012,0x147a,0x14ba,0x1012,0x1012,0x1012,0x1012,0x1012, -0x1012,0x1012,0x150a,0x1012,0x1012,0x1012,0x1012,0x1012,0xf011,0xf011,0x1549,0xf011,0x1589,0xf011,0xf011,0xf011, -0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0x15c9,0xf011,0xf011,0x1609,0x1649,0xf011,0xf011,0xf011,0xf011,0xf011, -0xf011,0xf011,0x1699,0xf011,0xf011,0xf011,0xf011,0xf011,0xd811,0xd811,0xd811,0xd811,0xd811,0xd811,0xd831,0xd811, -0xd831,0xd811,0xd811,0xd811,0xd811,0xd811,0xd811,0xd811,0x92,0xff91,0x16da,0x1719,0x92,0xff91,0x92,0xff91, +0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x1012,0x1012,0x13fa,0x1012,0x143a,0x1012,0x1012,0x1012, +0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x147a,0x1012,0x1012,0x14ba,0x14fa,0x1012,0x1012,0x1012,0x1012,0x1012, +0x1012,0x1012,0x154a,0x1012,0x1012,0x1012,0x1012,0x1012,0xf011,0xf011,0x1589,0xf011,0x15c9,0xf011,0xf011,0xf011, +0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0x1609,0xf011,0xf011,0x1649,0x1689,0xf011,0xf011,0xf011,0xf011,0xf011, +0xf011,0xf011,0x16d9,0xf011,0xf011,0xf011,0xf011,0xf011,0xd811,0xd811,0xd811,0xd811,0xd811,0xd811,0xd831,0xd811, +0xd831,0xd811,0xd811,0xd811,0xd811,0xd811,0xd811,0xd811,0x92,0xff91,0x171a,0x1759,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0x44,0x44,0x44,0x44,0x44, 4,4,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, @@ -313,14 +313,14 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812, 0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812, -0x1812,0x1812,0x1812,0,0,4,0,0,0,0,0,4,1,0xe811,0xe811,0xe811, +0x1812,0x1812,0x1812,0,5,4,0,0,0,0,0,4,1,0xe811,0xe811,0xe811, 0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811, -0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0x1759, -1,0,0,0,0,0,0,0,0,0x64,0x44,0x44,0x44,0x44,0x64,0x44, +0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0x1799, +1,0,0,5,5,0,0,0,0,0x64,0x44,0x44,0x44,0x44,0x64,0x44, 0x44,0x44,0x64,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x64,0x64,0x64,0x64,0x64, 0x44,0x44,0x64,0x44,0x44,0x64,0x64,0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64, 0x64,0x64,0x64,0x64,0x64,0x64,0,0x64,0,0x64,0x64,0,0x44,0x64,0,0x64, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x64,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, 0,0,0,0,0,0,0,0,4,4,4,4,4,4,0,0, @@ -381,7 +381,7 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0,0,4,4,4,4,4,4,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0x64,0,0,4,0,4,4,4,4,0,0,0, -0,0,0,0,0,0x64,0,0,0,0,0,0,0,4,4,0, +0,0,0,0,0,0x64,0,0,0,0,0,4,4,4,4,0, 0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0, @@ -423,18 +423,18 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0, 0,0,4,0,0,4,4,0,0,0,0,0,0,0x64,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, -0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a, -0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a, -0x179a,0x179a,0,0x179a,0,0,0,0,0,0x179a,0,0,0x17b9,0x17e9,0x1819,0x1849, -0x1879,0x18a9,0x18d9,0x1909,0x1939,0x1969,0x1999,0x19c9,0x19f9,0x1a29,0x1a59,0x1a89,0x1ab9,0x1ae9,0x1b19,0x1b49, -0x1b79,0x1ba9,0x1bd9,0x1c09,0x1c39,0x1c69,0x1c99,0x1cc9,0x1cf9,0x1d29,0x1d59,0x1d89,0x1db9,0x1de9,0x1e19,0x1e49, -0x1e79,0x1ea9,0x1ed9,0x1f09,0x1f39,0x1f69,0x1f99,0,5,0x1fc9,0x1ff9,0x2029,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x205a,0x205a,0x205a,0x205a, -0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x207a,0x207a,0x207a,0x207a, -0x207a,0x207a,0,0,0x2099,0x20c9,0x20f9,0x2129,0x2159,0x2189,0,0,0x205a,0x205a,0x205a,0x205a, -0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a, -0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0,0,0,0, +0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da, +0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da,0x17da, +0x17da,0x17da,0,0x17da,0,0,0,0,0,0x17da,0,0,0x17f9,0x1829,0x1859,0x1889, +0x18b9,0x18e9,0x1919,0x1949,0x1979,0x19a9,0x19d9,0x1a09,0x1a39,0x1a69,0x1a99,0x1ac9,0x1af9,0x1b29,0x1b59,0x1b89, +0x1bb9,0x1be9,0x1c19,0x1c49,0x1c79,0x1ca9,0x1cd9,0x1d09,0x1d39,0x1d69,0x1d99,0x1dc9,0x1df9,0x1e29,0x1e59,0x1e89, +0x1eb9,0x1ee9,0x1f19,0x1f49,0x1f79,0x1fa9,0x1fd9,0,5,0x2009,0x2039,0x2069,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x209a,0x209a,0x209a,0x209a, +0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x20ba,0x20ba,0x20ba,0x20ba, +0x20ba,0x20ba,0,0,0x20d9,0x2109,0x2139,0x2169,0x2199,0x21c9,0,0,0x209a,0x209a,0x209a,0x209a, +0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a, +0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0x209a,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4, 0x64,0x60,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,4,4,0x60,0,0,0,0,0,0,0, @@ -459,10 +459,10 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0x44,0x44,0x44,0x44,0x44,0,0,0x64,0,0,0,0,0,0,0,4, 0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x64,0x64,0x64, 0x64,0x64,0x64,0x44,0x44,0x64,4,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x44, -0x44,0x44,0x44,0x64,0,0,0,0,0,0,0,0,0,0,0,0, +0x44,0x44,0x44,0x64,0x44,0x44,0x64,0x64,0x44,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0x64,0x44,0x44,0x64,0x64,0x44,0x44,0x44, 0x44,0x44,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, -0x44,0x44,0x44,0x44,0x44,0x64,0,0,0,0,0,0,0,0,0,0, +0x44,0x44,0x44,0x44,0x44,0x64,0x44,0x44,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0x64,0,4,4, 4,4,4,0,4,0,0,0,0,0,4,0,0x60,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -474,10 +474,10 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4, 4,4,4,4,0,0,4,0x64,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -4,4,4,4,4,4,0,0,0x21b9,0x21e9,0x2219,0x2249,0x2279,0x22c9,0x2319,0x2349, -0x2379,0x92,0xff91,0,0,0,0,0,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa, -0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa, -0x23aa,0x23aa,0x23aa,0,0,0x23aa,0x23aa,0x23aa,0,0,0,0,0,0,0,0, +4,4,4,4,4,4,0,0,0x21f9,0x2229,0x2259,0x2289,0x22b9,0x2309,0x2359,0x2389, +0x23b9,0x92,0xff91,0,0,0,0,0,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea, +0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea,0x23ea, +0x23ea,0x23ea,0x23ea,0,0,0x23ea,0x23ea,0x23ea,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0x44,0x44,0x44,0,0x64,0x64,0x64,0x64, 0x64,0x64,0x44,0x44,0x64,0x64,0x64,0x64,0x44,0,0x64,0x64,0x64,0x64,0x64,0x64, 0x64,0,0,0,0,0x64,0,0,0,0,0,0,0x44,0,0,0, @@ -487,52 +487,52 @@ static const uint16_t ucase_props_trieIndex[13544]={ 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,0x25,5,5,5,5,5, 5,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1, -5,0x23c9,1,1,1,0x23e9,1,1,5,5,5,5,0x25,5,5,5, +5,0x2409,1,1,1,0x2429,1,1,5,5,5,5,0x25,5,5,5, 0x25,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,0x2409,1,1,1,1,1,1,1,0x21,1, +1,1,1,1,1,1,0x2449,1,1,1,1,1,1,1,0x21,1, 1,1,1,5,5,5,5,5,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x64, 0x64,0x64,0x64,0x44,0x64,0x64,0x44,0x64,0x44,0x44,0x64,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x64,0x44,0x44,0x64,0x64,0x64,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xffb1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x242a,0x2469,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x246a,0x24a9,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x24a9,0x2529,0x25a9,0x2629,0x26a9,0x2729, -1,1,0x275a,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xffb1, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x24e9,0x2569,0x25e9,0x2669,0x26e9,0x2769, +1,1,0x279a,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xffb1, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x411,0x411,0x411,0x411,0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12, 0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411,0x411,0x411,0,0,0xfc12,0xfc12,0xfc12,0xfc12, 0xfc12,0xfc12,0,0,0x411,0x411,0x411,0x411,0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12, 0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411,0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12, 0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411,0x411,0x411,0,0,0xfc12,0xfc12,0xfc12,0xfc12, -0xfc12,0xfc12,0,0,0x27a9,0x411,0x2829,0x411,0x28d9,0x411,0x2989,0x411,0,0xfc12,0,0xfc12, +0xfc12,0xfc12,0,0,0x2819,0x411,0x2899,0x411,0x2949,0x411,0x29f9,0x411,0,0xfc12,0,0xfc12, 0,0xfc12,0,0xfc12,0x411,0x411,0x411,0x411,0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12, 0xfc12,0xfc12,0xfc12,0xfc12,0x2511,0x2511,0x2b11,0x2b11,0x2b11,0x2b11,0x3211,0x3211,0x4011,0x4011,0x3811,0x3811, -0x3f11,0x3f11,0,0,0x2a39,0x2aa9,0x2b19,0x2b89,0x2bf9,0x2c69,0x2cd9,0x2d49,0x2dbb,0x2e2b,0x2e9b,0x2f0b, -0x2f7b,0x2feb,0x305b,0x30cb,0x3139,0x31a9,0x3219,0x3289,0x32f9,0x3369,0x33d9,0x3449,0x34bb,0x352b,0x359b,0x360b, -0x367b,0x36eb,0x375b,0x37cb,0x3839,0x38a9,0x3919,0x3989,0x39f9,0x3a69,0x3ad9,0x3b49,0x3bbb,0x3c2b,0x3c9b,0x3d0b, -0x3d7b,0x3deb,0x3e5b,0x3ecb,0x411,0x411,0x3f39,0x3fb9,0x4029,0,0x40a9,0x4129,0xfc12,0xfc12,0xdb12,0xdb12, -0x41db,4,0x4249,4,4,4,0x4299,0x4319,0x4389,0,0x4409,0x4489,0xd512,0xd512,0xd512,0xd512, -0x453b,4,4,4,0x411,0x411,0x45a9,0x4659,0,0,0x4719,0x4799,0xfc12,0xfc12,0xce12,0xce12, -0,4,4,4,0x411,0x411,0x4849,0x48f9,0x49b9,0x391,0x4a39,0x4ab9,0xfc12,0xfc12,0xc812,0xc812, -0xfc92,4,4,4,0,0,0x4b69,0x4be9,0x4c59,0,0x4cd9,0x4d59,0xc012,0xc012,0xc112,0xc112, -0x4e0b,4,4,0,0,0,0,0,0,0,0,0,0,0,0,4, +0x3f11,0x3f11,0,0,0x2aa9,0x2b19,0x2b89,0x2bf9,0x2c69,0x2cd9,0x2d49,0x2db9,0x2e2b,0x2e9b,0x2f0b,0x2f7b, +0x2feb,0x305b,0x30cb,0x313b,0x31a9,0x3219,0x3289,0x32f9,0x3369,0x33d9,0x3449,0x34b9,0x352b,0x359b,0x360b,0x367b, +0x36eb,0x375b,0x37cb,0x383b,0x38a9,0x3919,0x3989,0x39f9,0x3a69,0x3ad9,0x3b49,0x3bb9,0x3c2b,0x3c9b,0x3d0b,0x3d7b, +0x3deb,0x3e5b,0x3ecb,0x3f3b,0x411,0x411,0x3fa9,0x4029,0x4099,0,0x4119,0x4199,0xfc12,0xfc12,0xdb12,0xdb12, +0x424b,4,0x42b9,4,4,4,0x4309,0x4389,0x43f9,0,0x4479,0x44f9,0xd512,0xd512,0xd512,0xd512, +0x45ab,4,4,4,0x411,0x411,0x4619,0x46c9,0,0,0x4789,0x4809,0xfc12,0xfc12,0xce12,0xce12, +0,4,4,4,0x411,0x411,0x48b9,0x4969,0x4a29,0x391,0x4aa9,0x4b29,0xfc12,0xfc12,0xc812,0xc812, +0xfc92,4,4,4,0,0,0x4bd9,0x4c59,0x4cc9,0,0x4d49,0x4dc9,0xc012,0xc012,0xc112,0xc112, +0x4e7b,4,4,0,0,0,0,0,0,0,0,0,0,0,0,4, 4,4,4,4,0,0,0,0,0,0,0,0,4,4,0,0, 0,0,0,0,4,0,0,4,0,0,4,4,4,4,4,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,4, 0,0x25,0,0,0,0,0,0,0,0,0,0,0,0,0,5, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x44,0x44,0x64,0x64,0x44,0x44,0x44,0x44,0x64,0x64,0x64,0x44,0x44,4,4,4, 4,0x44,4,4,4,0x64,0x64,0x44,0x64,0x44,0x64,0x64,0x64,0x64,0x64,0x64, 0x44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,2,0,0,0,0,2,0,0,1,2,2,2,1,1, 2,2,2,1,0,2,0,0,0,2,2,2,2,2,0,0, -0,0,0,0,2,0,0x4e7a,0,2,0,0x4eba,0x4efa,2,2,0,1, +0,0,0,0,2,0,0x4eea,0,2,0,0x4f2a,0x4f6a,2,2,0,1, 2,2,0xe12,2,1,0,0,0,0,1,0,0,1,1,2,2, 0,0,0,0,0,2,1,1,0x21,0x21,0,0,0,0,0xf211,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -547,14 +547,14 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812, 0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0xe811,0xe811,0xe811,0xe811, 0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811, -0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0x92,0xff91,0x4f3a,0x4f5a, -0x4f7a,0x4f99,0x4fb9,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x4fda,0x4ffa,0x501a,0x503a,1,0x92,0xff91, -1,0x92,0xff91,1,1,1,1,1,0x25,5,0x505a,0x505a,0x92,0xff91,0x92,0xff91, +0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0x92,0xff91,0x4faa,0x4fca, +0x4fea,0x5009,0x5029,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x504a,0x506a,0x508a,0x50aa,1,0x92,0xff91, +1,0x92,0xff91,1,1,1,1,1,0x25,5,0x50ca,0x50ca,0x92,0xff91,0x92,0xff91, 1,0,0,0,0,0,0,0x92,0xff91,0x92,0xff91,0x44,0x44,0x44,0x92,0xff91, -0,0,0,0,0,0,0,0,0,0,0,0,0x5079,0x5079,0x5079,0x5079, -0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079, -0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0x5079,0,0x5079, -0,0,0,0,0,0x5079,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x50e9,0x50e9,0x50e9,0x50e9, +0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9, +0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0x50e9,0,0x50e9, +0,0,0,0,0,0x50e9,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0x64,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, @@ -568,7 +568,7 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x509a,0x50d9,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x510a,0x5149,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0,0x44,4,4,4,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0,4,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, @@ -580,12 +580,12 @@ static const uint16_t ucase_props_trieIndex[13544]={ 4,4,4,4,4,4,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,1,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,5,1,1,1,1,1,1,1, -1,0x92,0xff91,0x92,0xff91,0x511a,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -4,4,4,0x92,0xff91,0x513a,1,0,0x92,0xff91,0x92,0xff91,0x1811,1,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x515a,0x517a,0x519a,0x51ba,0x515a,1, -0x51da,0x51fa,0x521a,0x523a,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0xe812,0x525a,0x527a,0x92,0xff91,0x92,0xff91,0x529a,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x52ba,0,0,0,0,0,0,0, +1,0x92,0xff91,0x92,0xff91,0x518a,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +4,4,4,0x92,0xff91,0x51aa,1,0,0x92,0xff91,0x92,0xff91,0x1811,1,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x51ca,0x51ea,0x520a,0x522a,0x51ca,1, +0x524a,0x526a,0x528a,0x52aa,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0xe812,0x52ca,0x52ea,0x92,0xff91,0x92,0xff91,0x530a,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x532a,0x534a,0,0,0,0,0x534a,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5, 5,0x92,0xff91,0,5,5,1,0,0,0,0,0,0,0,4,0, 0,0,0x64,0,0,0,0,4,0,0,0,0,0,0,0,0, @@ -614,170 +614,174 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,4, 4,0,0x64,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,1,1,1,1,0x52d9,1,1,1,1,1,1,1,4, -5,5,5,5,1,1,1,1,1,1,1,1,1,5,4,4, -0,0,0,0,0x52f9,0x5329,0x5359,0x5389,0x53b9,0x53e9,0x5419,0x5449,0x5479,0x54a9,0x54d9,0x5509, -0x5539,0x5569,0x5599,0x55c9,0x5bf9,0x5c29,0x5c59,0x5c89,0x5cb9,0x5ce9,0x5d19,0x5d49,0x5d79,0x5da9,0x5dd9,0x5e09, -0x5e39,0x5e69,0x5e99,0x5ec9,0x5ef9,0x5f29,0x5f59,0x5f89,0x5fb9,0x5fe9,0x6019,0x6049,0x6079,0x60a9,0x60d9,0x6109, -0x6139,0x6169,0x6199,0x61c9,0x55f9,0x5629,0x5659,0x5689,0x56b9,0x56e9,0x5719,0x5749,0x5779,0x57a9,0x57d9,0x5809, -0x5839,0x5869,0x5899,0x58c9,0x58f9,0x5929,0x5959,0x5989,0x59b9,0x59e9,0x5a19,0x5a49,0x5a79,0x5aa9,0x5ad9,0x5b09, -0x5b39,0x5b69,0x5b99,0x5bc9,0,0,0,0,0,4,0,0,4,0,0,0, -0,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x61f9,0x6279,0x62f9,0x6379,0x6429,0x64d9,0x6569,0,0,0,0,0, -0,0,0,0,0,0,0,0x6609,0x6689,0x6709,0x6789,0x6809,0,0,0,0, -0,0,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,0,0,0,4,0,0,0,0, -0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x64, -0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,4,0,0,4,0,0, -0,0,0,0,0,0,0,0,0,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, -0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, -0x1012,0x1012,0x1012,0,0,0,4,0,4,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, -0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, -0xf011,0xf011,0xf011,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4, +1,1,1,1,1,1,1,0x1091,0x1091,1,1,1,1,1,1,0x5369, +1,1,1,1,1,1,1,4,5,5,5,5,1,1,1,1, +1,1,1,1,1,5,4,4,0xef92,0xef92,0,0,0x5389,0x53b9,0x53e9,0x5419, +0x5449,0x5479,0x54a9,0x54d9,0x5509,0x5539,0x5569,0x5599,0x55c9,0x55f9,0x5629,0x5659,0x5c89,0x5cb9,0x5ce9,0x5d19, +0x5d49,0x5d79,0x5da9,0x5dd9,0x5e09,0x5e39,0x5e69,0x5e99,0x5ec9,0x5ef9,0x5f29,0x5f59,0x5f89,0x5fb9,0x5fe9,0x6019, +0x6049,0x6079,0x60a9,0x60d9,0x6109,0x6139,0x6169,0x6199,0x61c9,0x61f9,0x6229,0x6259,0x5689,0x56b9,0x56e9,0x5719, +0x5749,0x5779,0x57a9,0x57d9,0x5809,0x5839,0x5869,0x5899,0x58c9,0x58f9,0x5929,0x5959,0x5989,0x59b9,0x59e9,0x5a19, +0x5a49,0x5a79,0x5aa9,0x5ad9,0x5b09,0x5b39,0x5b69,0x5b99,0x5bc9,0x5bf9,0x5c29,0x5c59,0,0,0,0, +0,4,0,0,4,0,0,0,0,0x64,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x6289,0x6309,0x6389,0x6409, +0x64b9,0x6569,0x65f9,0,0,0,0,0,0,0,0,0,0,0,0,0x6699, +0x6719,0x6799,0x6819,0x6899,0,0,0,0,0,0,0x64,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, +0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0x64,0,0, -0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,4,0,0,4,0,0,0,0,0,0,0,0,0,0, +0,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, +0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0,0,0,4,0, +4,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, +0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x44,0x44,0x44,0x44,0x44,0,0,0,0,0,0x1412,0x1412,0x1412,0x1412, -0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412, -0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0xec11,0xec11,0xec11,0xec11, -0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11, -0xec11,0xec11,0xec11,0xec11,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0x64,0,0,0x64,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44,0x44,0, 0,0,0,0,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412, -0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0,0,0,0,0xec11,0xec11,0xec11,0xec11, +0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412, +0x1412,0x1412,0x1412,0x1412,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11, +0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x1412,0x1412,0x1412,0x1412, +0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412, +0,0,0,0,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11, 0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11, -0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392, -0x1392,0x1392,0x1392,0,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0,0x1392,0x1392,0,0xec91, -0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0,0xec91,0xec91,0xec91,0xec91,0xec91, -0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0,0xec91,0xec91,0xec91,0xec91,0xec91, -0xec91,0xec91,0,0xec91,0xec91,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, -5,5,5,0,0,0,0,0,5,4,4,5,5,5,0,5, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0,0x1392,0x1392,0x1392,0x1392, +0x1392,0x1392,0x1392,0,0x1392,0x1392,0,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91, +0xec91,0xec91,0,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91, +0xec91,0xec91,0,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0,0xec91,0xec91,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,4,4,5,5,5,0,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,0,4,4,4,0,4,4,0, -0,0,0,0,4,0x64,4,0x44,0,0,0,0,0,0,0,0, +0,4,4,4,0,4,4,0,0,0,0,0,4,0x64,4,0x44, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x44,0x64,0x64,0,0,0,0,0x64,0,0,0,0,0,0x44,0x64,0, +0,0,0,0,0,0,0,0,0x44,0x64,0x64,0,0,0,0,0x64, +0,0,0,0,0,0x44,0x64,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012, 0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012, -0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011, +0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012, +0x2012,0x2012,0x2012,0,0,0,0,0,0,0,0,0,0,0,0,0, +0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011, 0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011, -0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44,0,0,0,0, +0xe011,0xe011,0xe011,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x44,0x44,0x44,0x44,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, +0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, +0x1012,0x1012,0,0,0,0x44,0x44,0x44,0x44,0x44,0,4,0xf011,0xf011,0xf011,0xf011, +0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,4,0,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, -0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0,0,0,0x44,0x44,0x44, -0x44,0x44,0,4,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, -0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x44,0x44,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x44,0x44,0,0,0,0,0,0,0,0,0,0,0, +0,4,0,0,0,4,4,0x44,0x64,0x64,0x44,0x44,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x64,0x64,0x64,0x44, +0x64,0x44,0x64,0x44,0x44,0x44,0x64,0x64,4,0x64,0x64,0x64,0,0,0,0, +0,0,0x64,0x64,0x44,0x44,0x44,0x64,0x44,0x64,0x64,0x64,0x64,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x64, +0x44,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4, +4,4,4,4,4,4,0x64,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x64,0x64,4,0x64,0x64,0x64,0,0,0,0,0,0,0x64,0x64, -0x44,0x44,0x44,0x64,0x44,0x64,0x64,0x64,0x64,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x44,0x64,0x44,0x64,0,0, +0x64,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0x64, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4, -4,4,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x64,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0x64,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,4,4,0,0,0x64,0x64,0,0,4,0,0,0,0,4,0, -0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0, +0,0,0,4,4,4,4,0,0,0x64,0x64,0,0,4,0,0, +0,0,4,0,0,0,0,0,0,0,0,0,0,4,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,4,4,4,0,4,4,4,4,4,4,0x64,0x64,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x64,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4, -4,4,4,0,0x60,0,0,0,0,0,0,0,0,4,0x64,4, -4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,4,4,4,0,0,4,0x60,0x64,4, -0,0,0,0,0,0,4,0,0,0,0,4,4,4,4,4, -4,0x64,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x44,0x44,0x44,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,4,4,4,4,4,0,4,4,4,4,4,4,0x64, +0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x64,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4, +4,4,4,4,4,4,4,0,0x60,0,0,0,0,0,0,0, +0,4,0x64,4,4,0,0,4,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0, +4,0x60,0x64,4,0,0,0,0,0,0,4,0,0,0,0,4, +4,4,4,4,4,0x64,0x64,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, +0,0,0,0,0,0,0,0,0,0x60,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x44, +0x44,0x44,0x44,0x44,0x44,0,0,0,0x44,0x44,0x44,0x44,0x44,0,0,0, 0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, -0,0,0,0,0,0x60,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x44, -0x44,0,0,0,0x44,0x44,0x44,0x44,0x44,0,0,0,0,0,0,0, -0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x64,0x60,0x64,0,4,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0x64,4,4,0,0x64,0,0,0,0,0, +0,0,0,0,0,0,0x64,0x60,0x64,0,4,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0x64,4,4,0,0x64,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x44,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,4,4,4,4,4,4,0,4,0, -0,0,0,4,4,0,0x64,0x64,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0x44,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4, +4,0,4,0,0,0,0,4,4,0,0x64,0x64,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,4,4,4,4,0,0,0,0,0,0, -4,4,0,0x64,0x64,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,4,4,4,4,0,0, +0,0,0,0,4,4,0,0x64,0x64,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,0, -0,4,0,0x64,0,0,0,0,0,0,0,0,0,0,0,4, -0,4,0,0,4,4,4,4,4,4,0x60,0x64,0,0,0,0, +0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4, +4,4,4,0,0,4,0,0x64,0,0,0,0,0,0,0,0, +0,0,0,4,0,4,0,0,4,4,4,4,4,4,0x60,0x64, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,4,0,4,0,0,4,4, -4,4,0,4,4,4,4,0x64,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,4,4,4,4,4,4,4,0,0x64,0x64,0,0,0,0,0, -0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, +0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4, +0,0,4,4,4,4,0,4,4,4,4,0x64,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,4,4,4,4,4,4,4,4,4,0,0x64,0x64,0, +0,0,0,0,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, 0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, +0x1012,0x1012,0x1012,0x1012,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, 0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, -0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,4,4,0x60,0x64,0, -0,0,0,0x64,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -4,4,4,4,0,0,4,4,0,0,0,0,0,4,4,4, -4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0, +0xf011,0xf011,0xf011,0xf011,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -0x64,4,4,4,4,0,0,4,4,4,4,0,0,0,0,0, -0,0,0,0x64,0,0,0,0,0,0,0,0,0,4,4,4, -4,4,4,0,0,4,4,4,0,0,0,0,0,0,0,0, -0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,0, -4,0x64,0,0,0,0,0,0,4,0,4,4,4,0,4,0, +4,0x60,0x64,0,0,0,0,0x64,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,0, -4,4,4,4,4,4,0,0x64,4,4,4,4,4,4,4,4, -0,0,4,4,4,4,4,4,4,0,4,4,0,4,4,0, +0,0,0,0,4,4,4,4,0,0,4,4,0,0,0,0, +0,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,4,4,4,4,4,4,0,0,0,4,0,4,4,0,4, -4,4,0x64,4,0x64,0x64,0,4,0,0,0,0,0,0,0,0, +0,0,0,4,0x64,4,4,4,4,0,0,4,4,4,4,0, +0,0,0,0,0,0,0,0x64,0,0,0,0,0,0,0,0, +0,4,4,4,4,4,4,0,0,4,4,4,0,0,0,0, +0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4, +4,4,4,0,4,0x64,0,0,0,0,0,0,4,0,4,4, +4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4, +4,4,4,0,4,4,4,4,4,4,0,0x64,4,4,4,4, +4,4,4,4,0,0,4,4,4,4,4,4,4,0,4,4, +0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,4,4,4,4,4,4,0,0,0,4,0, +4,4,0,4,4,4,0x64,4,0x64,0x64,0,4,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -4,4,0,0,0,4,0,0x64,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0, +0,0,0,0,4,4,0,0,0,4,0,0x64,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0, +0,0,0,0,4,0x60,0x64,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0, -4,0x60,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0, +4,4,4,4,4,4,4,4,4,4,0,0,0,4,4,0x64, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x64,0x64,0x64,0x64,0x64,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0, +0,0,0,0,0,0,0,0,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92, +0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92, +0xd92,0,0,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291, +0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,0,4,4,0,0,0, +0,0,0,0,0,0,0,0,0x60,0x60,4,4,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0, -0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,0,0,0,0,0,0,0,0,0,0,4,4,4,4, -4,4,4,4,4,4,0,0,0,4,4,0x64,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x64,0x64,0x64,0x64, -0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,0,0,0,0, -0,0,0,0,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92, -0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0,0,0xf291, -0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291,0xf291, -0xf291,0xf291,0xf291,0xf291,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,0,4,4,0,0,0,0,0,0,0, -0,0,0,0,0x60,0x60,4,4,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,4,4,4,4,0,4,4,4, -4,4,4,4,0,4,4,0,0,0,0,0,0,0,0,0, +0,4,4,4,4,4,4,4,0,4,4,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,4,0x64,0,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,0,0,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,4,0x64,0,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,0,0,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x64,0x64,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0x60,0x60,0x64,0x64,0x64,0,0,0,0x60,0x60,0x60, 0x60,0x60,0x60,4,4,4,4,4,4,4,4,0x64,0x64,0x64,0x64,0x64, @@ -785,6 +789,8 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0x44,0x44,0x44,0x44,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0,0,0, +0,0,0,0,0,0,0,0,0x60,0x60,0x60,0,0,0,0,0, +0,0,0,0x64,0x64,0,0,0x60,0x60,0x60,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,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, @@ -809,7 +815,7 @@ static const uint16_t ucase_props_trieIndex[13544]={ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 1,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, -1,1,1,1,1,1,0,0,2,2,2,2,2,2,2,2, +1,1,1,1,1,1,1,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,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,0,1,1,1,1, @@ -827,12 +833,17 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4, 0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, 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,0,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,0x21,1,1,1,1,1, +0x92,0xff91,1,1,1,1,1,1,0x92,0xff91,0x92,0xff91,1,0x92,0xff91,1, +1,0x92,0xff91,1,1,1,1,1,1,1,1,1,1,1,1,1, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xffb1,0x21,0x21,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,1,1,1,1,0x6919,1,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5, +5,5,5,5,5,5,5,5,5,0x25,5,5,5,5,5,5, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,0,0x44,0x44,0x44,0x44,0x44, -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,0x21,1,1,1,1,0, -0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x44,0x44,0,0x44,0x44,0,0x44,0x44,0x44,0x44,0x44,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 0x25,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0, @@ -863,139 +874,149 @@ static const uint16_t ucase_props_trieIndex[13544]={ 0,0,0,0,0,0,0,0 }; -static const uint16_t ucase_props_exceptions[1672]={ +static const uint16_t ucase_props_exceptions[1692]={ 0xc850,0x20,2,0x130,0x131,0x4810,0x20,0x841,0x6b,1,0x212a,0x841,0x73,1,0x17f,0x5c50, 0x20,2,0x130,0x131,0x844,0x4b,1,0x212a,0x844,0x53,1,0x17f,0x806,0x3bc,0x39c,0x841, -0xe5,1,0x212b,0x8c0,1,0x2220,0x73,0x73,0x53,0x53,0x53,0x73,0x1e9e,0x844,0xc5,1, -0x212b,0x4810,1,0xce50,0xc7,2,0x49,0x131,0x844,0x49,2,0x69,0x130,0x880,0x2220,0x2bc, -0x6e,0x2bc,0x4e,0x2bc,0x4e,0x806,0x73,0x53,0x810,0xa641,0x809,0x1c6,0x1c5,0x80d,0x1c6,0x1c4, -0x1c5,0x80c,0x1c4,0x1c5,0x809,0x1c9,0x1c8,0x80d,0x1c9,0x1c7,0x1c8,0x80c,0x1c7,0x1c8,0x809,0x1cc, -0x1cb,0x80d,0x1cc,0x1ca,0x1cb,0x80c,0x1ca,0x1cb,0x880,0x2220,0x6a,0x30c,0x4a,0x30c,0x4a,0x30c, -0x809,0x1f3,0x1f2,0x80d,0x1f3,0x1f1,0x1f2,0x80c,0x1f1,0x1f2,0x810,0x2a2b,0x810,0x2a28,0x810,0x2a3f, -0x810,0x2a1f,0x810,0x2a1c,0x810,0x2a1e,0x810,0xa54f,0x810,0xa54b,0x810,0xa567,0x810,0xa528,0x810,0xa544, -0x810,0x29f7,0x810,0xa541,0x810,0x29fd,0x810,0x29e7,0x810,0xa543,0x810,0xa52a,0x1810,0xa515,0x810,0xa512, -0x6800,0x3846,0x3b9,0x399,1,0x1fbe,0x8c0,1,0x3330,0x3b9,0x308,0x301,0x399,0x308,0x301,0x399, -0x308,0x301,0x1fd3,0x841,0x3b2,1,0x3d0,0x841,0x3b5,1,0x3f5,0x841,0x3b8,2,0x3d1,0x3f4, -0x841,0x3b9,2,0x345,0x1fbe,0x841,0x3ba,1,0x3f0,0x841,0x3bc,1,0xb5,0x841,0x3c0,1, -0x3d6,0x841,0x3c1,1,0x3f1,0x4850,0x20,1,0x3c2,0x841,0x3c6,1,0x3d5,0x841,0x3c9,1, -0x2126,0x8c0,1,0x3330,0x3c5,0x308,0x301,0x3a5,0x308,0x301,0x3a5,0x308,0x301,0x1fe3,0x844,0x392, -1,0x3d0,0x844,0x395,1,0x3f5,0x844,0x398,2,0x3d1,0x3f4,0x844,0x399,2,0x345,0x1fbe, -0x844,0x39a,1,0x3f0,0x844,0x39c,1,0xb5,0x844,0x3a0,1,0x3d6,0x844,0x3a1,1,0x3f1, -0x806,0x3c3,0x3a3,0x844,0x3a3,1,0x3c2,0x844,0x3a6,1,0x3d5,0x844,0x3a9,1,0x2126,0x806, -0x3b2,0x392,0x846,0x3b8,0x398,1,0x3f4,0x806,0x3c6,0x3a6,0x806,0x3c0,0x3a0,0x806,0x3ba,0x39a, -0x806,0x3c1,0x3a1,0x841,0x3b8,2,0x398,0x3d1,0x806,0x3b5,0x395,0x841,0x432,1,0x1c80,0x841, -0x434,1,0x1c81,0x841,0x43e,1,0x1c82,0x841,0x441,1,0x1c83,0x841,0x442,2,0x1c84,0x1c85, -0x841,0x44a,1,0x1c86,0x844,0x412,1,0x1c80,0x844,0x414,1,0x1c81,0x844,0x41e,1,0x1c82, -0x844,0x421,1,0x1c83,0x844,0x422,2,0x1c84,0x1c85,0x844,0x42a,1,0x1c86,0x841,0x463,1, -0x1c87,0x844,0x462,1,0x1c87,0x4880,0x20,0x565,0x582,0x810,0x1c60,0x80c,0x1c90,0x10d0,0x80c,0x1c91, -0x10d1,0x80c,0x1c92,0x10d2,0x80c,0x1c93,0x10d3,0x80c,0x1c94,0x10d4,0x80c,0x1c95,0x10d5,0x80c,0x1c96,0x10d6, -0x80c,0x1c97,0x10d7,0x80c,0x1c98,0x10d8,0x80c,0x1c99,0x10d9,0x80c,0x1c9a,0x10da,0x80c,0x1c9b,0x10db,0x80c, -0x1c9c,0x10dc,0x80c,0x1c9d,0x10dd,0x80c,0x1c9e,0x10de,0x80c,0x1c9f,0x10df,0x80c,0x1ca0,0x10e0,0x80c,0x1ca1, -0x10e1,0x80c,0x1ca2,0x10e2,0x80c,0x1ca3,0x10e3,0x80c,0x1ca4,0x10e4,0x80c,0x1ca5,0x10e5,0x80c,0x1ca6,0x10e6, -0x80c,0x1ca7,0x10e7,0x80c,0x1ca8,0x10e8,0x80c,0x1ca9,0x10e9,0x80c,0x1caa,0x10ea,0x80c,0x1cab,0x10eb,0x80c, -0x1cac,0x10ec,0x80c,0x1cad,0x10ed,0x80c,0x1cae,0x10ee,0x80c,0x1caf,0x10ef,0x80c,0x1cb0,0x10f0,0x80c,0x1cb1, -0x10f1,0x80c,0x1cb2,0x10f2,0x80c,0x1cb3,0x10f3,0x80c,0x1cb4,0x10f4,0x80c,0x1cb5,0x10f5,0x80c,0x1cb6,0x10f6, -0x80c,0x1cb7,0x10f7,0x80c,0x1cb8,0x10f8,0x80c,0x1cb9,0x10f9,0x80c,0x1cba,0x10fa,0x80c,0x1cbd,0x10fd,0x80c, -0x1cbe,0x10fe,0x80c,0x1cbf,0x10ff,0xa10,0x97d0,0xa10,8,0x806,0x13f0,0x13f0,0x806,0x13f1,0x13f1,0x806, -0x13f2,0x13f2,0x806,0x13f3,0x13f3,0x806,0x13f4,0x13f4,0x806,0x13f5,0x13f5,0x806,0x432,0x412,0x806,0x434, -0x414,0x806,0x43e,0x41e,0x806,0x441,0x421,0x846,0x442,0x422,1,0x1c85,0x846,0x442,0x422,1, -0x1c84,0x806,0x44a,0x42a,0x806,0x463,0x462,0x806,0xa64b,0xa64a,0xc10,0xbc0,0x810,0x8a04,0x810,0xee6, -0x810,0x8a38,0x841,0x1e61,1,0x1e9b,0x844,0x1e60,1,0x1e9b,0x880,0x2220,0x68,0x331,0x48,0x331, -0x48,0x331,0x880,0x2220,0x74,0x308,0x54,0x308,0x54,0x308,0x880,0x2220,0x77,0x30a,0x57,0x30a, -0x57,0x30a,0x880,0x2220,0x79,0x30a,0x59,0x30a,0x59,0x30a,0x880,0x2220,0x61,0x2be,0x41,0x2be, -0x41,0x2be,0x806,0x1e61,0x1e60,0xc90,0x1dbf,0x20,0x73,0x73,0x880,0x2220,0x3c5,0x313,0x3a5,0x313, -0x3a5,0x313,0x880,0x3330,0x3c5,0x313,0x300,0x3a5,0x313,0x300,0x3a5,0x313,0x300,0x880,0x3330,0x3c5, -0x313,0x301,0x3a5,0x313,0x301,0x3a5,0x313,0x301,0x880,0x3330,0x3c5,0x313,0x342,0x3a5,0x313,0x342, -0x3a5,0x313,0x342,0x890,8,0x220,0x1f00,0x3b9,0x1f08,0x399,0x890,8,0x220,0x1f01,0x3b9,0x1f09, -0x399,0x890,8,0x220,0x1f02,0x3b9,0x1f0a,0x399,0x890,8,0x220,0x1f03,0x3b9,0x1f0b,0x399,0x890, -8,0x220,0x1f04,0x3b9,0x1f0c,0x399,0x890,8,0x220,0x1f05,0x3b9,0x1f0d,0x399,0x890,8,0x220, -0x1f06,0x3b9,0x1f0e,0x399,0x890,8,0x220,0x1f07,0x3b9,0x1f0f,0x399,0xc90,8,0x220,0x1f00,0x3b9, -0x1f08,0x399,0xc90,8,0x220,0x1f01,0x3b9,0x1f09,0x399,0xc90,8,0x220,0x1f02,0x3b9,0x1f0a,0x399, -0xc90,8,0x220,0x1f03,0x3b9,0x1f0b,0x399,0xc90,8,0x220,0x1f04,0x3b9,0x1f0c,0x399,0xc90,8, -0x220,0x1f05,0x3b9,0x1f0d,0x399,0xc90,8,0x220,0x1f06,0x3b9,0x1f0e,0x399,0xc90,8,0x220,0x1f07, -0x3b9,0x1f0f,0x399,0x890,8,0x220,0x1f20,0x3b9,0x1f28,0x399,0x890,8,0x220,0x1f21,0x3b9,0x1f29, -0x399,0x890,8,0x220,0x1f22,0x3b9,0x1f2a,0x399,0x890,8,0x220,0x1f23,0x3b9,0x1f2b,0x399,0x890, -8,0x220,0x1f24,0x3b9,0x1f2c,0x399,0x890,8,0x220,0x1f25,0x3b9,0x1f2d,0x399,0x890,8,0x220, -0x1f26,0x3b9,0x1f2e,0x399,0x890,8,0x220,0x1f27,0x3b9,0x1f2f,0x399,0xc90,8,0x220,0x1f20,0x3b9, -0x1f28,0x399,0xc90,8,0x220,0x1f21,0x3b9,0x1f29,0x399,0xc90,8,0x220,0x1f22,0x3b9,0x1f2a,0x399, -0xc90,8,0x220,0x1f23,0x3b9,0x1f2b,0x399,0xc90,8,0x220,0x1f24,0x3b9,0x1f2c,0x399,0xc90,8, -0x220,0x1f25,0x3b9,0x1f2d,0x399,0xc90,8,0x220,0x1f26,0x3b9,0x1f2e,0x399,0xc90,8,0x220,0x1f27, -0x3b9,0x1f2f,0x399,0x890,8,0x220,0x1f60,0x3b9,0x1f68,0x399,0x890,8,0x220,0x1f61,0x3b9,0x1f69, -0x399,0x890,8,0x220,0x1f62,0x3b9,0x1f6a,0x399,0x890,8,0x220,0x1f63,0x3b9,0x1f6b,0x399,0x890, -8,0x220,0x1f64,0x3b9,0x1f6c,0x399,0x890,8,0x220,0x1f65,0x3b9,0x1f6d,0x399,0x890,8,0x220, -0x1f66,0x3b9,0x1f6e,0x399,0x890,8,0x220,0x1f67,0x3b9,0x1f6f,0x399,0xc90,8,0x220,0x1f60,0x3b9, -0x1f68,0x399,0xc90,8,0x220,0x1f61,0x3b9,0x1f69,0x399,0xc90,8,0x220,0x1f62,0x3b9,0x1f6a,0x399, -0xc90,8,0x220,0x1f63,0x3b9,0x1f6b,0x399,0xc90,8,0x220,0x1f64,0x3b9,0x1f6c,0x399,0xc90,8, -0x220,0x1f65,0x3b9,0x1f6d,0x399,0xc90,8,0x220,0x1f66,0x3b9,0x1f6e,0x399,0xc90,8,0x220,0x1f67, -0x3b9,0x1f6f,0x399,0x880,0x2220,0x1f70,0x3b9,0x1fba,0x399,0x1fba,0x345,0x890,9,0x220,0x3b1,0x3b9, -0x391,0x399,0x880,0x2220,0x3ac,0x3b9,0x386,0x399,0x386,0x345,0x880,0x2220,0x3b1,0x342,0x391,0x342, -0x391,0x342,0x880,0x3330,0x3b1,0x342,0x3b9,0x391,0x342,0x399,0x391,0x342,0x345,0xc90,9,0x220, -0x3b1,0x3b9,0x391,0x399,0x846,0x3b9,0x399,1,0x345,0x880,0x2220,0x1f74,0x3b9,0x1fca,0x399,0x1fca, -0x345,0x890,9,0x220,0x3b7,0x3b9,0x397,0x399,0x880,0x2220,0x3ae,0x3b9,0x389,0x399,0x389,0x345, -0x880,0x2220,0x3b7,0x342,0x397,0x342,0x397,0x342,0x880,0x3330,0x3b7,0x342,0x3b9,0x397,0x342,0x399, -0x397,0x342,0x345,0xc90,9,0x220,0x3b7,0x3b9,0x397,0x399,0x880,0x3330,0x3b9,0x308,0x300,0x399, -0x308,0x300,0x399,0x308,0x300,0x882,0x390,0x3330,0x3b9,0x308,0x301,0x399,0x308,0x301,0x399,0x308, -0x301,0x880,0x2220,0x3b9,0x342,0x399,0x342,0x399,0x342,0x880,0x3330,0x3b9,0x308,0x342,0x399,0x308, -0x342,0x399,0x308,0x342,0x880,0x3330,0x3c5,0x308,0x300,0x3a5,0x308,0x300,0x3a5,0x308,0x300,0x882, -0x3b0,0x3330,0x3c5,0x308,0x301,0x3a5,0x308,0x301,0x3a5,0x308,0x301,0x880,0x2220,0x3c1,0x313,0x3a1, -0x313,0x3a1,0x313,0x880,0x2220,0x3c5,0x342,0x3a5,0x342,0x3a5,0x342,0x880,0x3330,0x3c5,0x308,0x342, -0x3a5,0x308,0x342,0x3a5,0x308,0x342,0x880,0x2220,0x1f7c,0x3b9,0x1ffa,0x399,0x1ffa,0x345,0x890,9, -0x220,0x3c9,0x3b9,0x3a9,0x399,0x880,0x2220,0x3ce,0x3b9,0x38f,0x399,0x38f,0x345,0x880,0x2220,0x3c9, -0x342,0x3a9,0x342,0x3a9,0x342,0x880,0x3330,0x3c9,0x342,0x3b9,0x3a9,0x342,0x399,0x3a9,0x342,0x345, -0xc90,9,0x220,0x3c9,0x3b9,0x3a9,0x399,0xc50,0x1d5d,1,0x3a9,0xc50,0x20bf,1,0x4b,0xc50, -0x2046,1,0xc5,0xc10,0x29f7,0xc10,0xee6,0xc10,0x29e7,0xc10,0x2a2b,0xc10,0x2a28,0xc10,0x2a1c,0xc10, -0x29fd,0xc10,0x2a1f,0xc10,0x2a1e,0xc10,0x2a3f,0xc10,0x1c60,0x841,0xa64b,1,0x1c88,0x844,0xa64a,1, -0x1c88,0xc10,0x8a04,0xc10,0xa528,0xc10,0xa544,0xc10,0xa54f,0xc10,0xa54b,0xc10,0xa541,0xc10,0xa512,0xc10, -0xa52a,0xc10,0xa515,0x810,0x3a0,0xc10,0xa543,0xc10,0x8a38,0xc10,0xa567,0xc10,0xa641,0xc10,0x3a0,0x806, -0x13a0,0x13a0,0x806,0x13a1,0x13a1,0x806,0x13a2,0x13a2,0x806,0x13a3,0x13a3,0x806,0x13a4,0x13a4,0x806,0x13a5, -0x13a5,0x806,0x13a6,0x13a6,0x806,0x13a7,0x13a7,0x806,0x13a8,0x13a8,0x806,0x13a9,0x13a9,0x806,0x13aa,0x13aa, -0x806,0x13ab,0x13ab,0x806,0x13ac,0x13ac,0x806,0x13ad,0x13ad,0x806,0x13ae,0x13ae,0x806,0x13af,0x13af,0x806, -0x13b0,0x13b0,0x806,0x13b1,0x13b1,0x806,0x13b2,0x13b2,0x806,0x13b3,0x13b3,0x806,0x13b4,0x13b4,0x806,0x13b5, -0x13b5,0x806,0x13b6,0x13b6,0x806,0x13b7,0x13b7,0x806,0x13b8,0x13b8,0x806,0x13b9,0x13b9,0x806,0x13ba,0x13ba, -0x806,0x13bb,0x13bb,0x806,0x13bc,0x13bc,0x806,0x13bd,0x13bd,0x806,0x13be,0x13be,0x806,0x13bf,0x13bf,0x806, -0x13c0,0x13c0,0x806,0x13c1,0x13c1,0x806,0x13c2,0x13c2,0x806,0x13c3,0x13c3,0x806,0x13c4,0x13c4,0x806,0x13c5, -0x13c5,0x806,0x13c6,0x13c6,0x806,0x13c7,0x13c7,0x806,0x13c8,0x13c8,0x806,0x13c9,0x13c9,0x806,0x13ca,0x13ca, -0x806,0x13cb,0x13cb,0x806,0x13cc,0x13cc,0x806,0x13cd,0x13cd,0x806,0x13ce,0x13ce,0x806,0x13cf,0x13cf,0x806, -0x13d0,0x13d0,0x806,0x13d1,0x13d1,0x806,0x13d2,0x13d2,0x806,0x13d3,0x13d3,0x806,0x13d4,0x13d4,0x806,0x13d5, -0x13d5,0x806,0x13d6,0x13d6,0x806,0x13d7,0x13d7,0x806,0x13d8,0x13d8,0x806,0x13d9,0x13d9,0x806,0x13da,0x13da, -0x806,0x13db,0x13db,0x806,0x13dc,0x13dc,0x806,0x13dd,0x13dd,0x806,0x13de,0x13de,0x806,0x13df,0x13df,0x806, -0x13e0,0x13e0,0x806,0x13e1,0x13e1,0x806,0x13e2,0x13e2,0x806,0x13e3,0x13e3,0x806,0x13e4,0x13e4,0x806,0x13e5, -0x13e5,0x806,0x13e6,0x13e6,0x806,0x13e7,0x13e7,0x806,0x13e8,0x13e8,0x806,0x13e9,0x13e9,0x806,0x13ea,0x13ea, -0x806,0x13eb,0x13eb,0x806,0x13ec,0x13ec,0x806,0x13ed,0x13ed,0x806,0x13ee,0x13ee,0x806,0x13ef,0x13ef,0x880, -0x2220,0x66,0x66,0x46,0x46,0x46,0x66,0x880,0x2220,0x66,0x69,0x46,0x49,0x46,0x69,0x880, -0x2220,0x66,0x6c,0x46,0x4c,0x46,0x6c,0x880,0x3330,0x66,0x66,0x69,0x46,0x46,0x49,0x46, -0x66,0x69,0x880,0x3330,0x66,0x66,0x6c,0x46,0x46,0x4c,0x46,0x66,0x6c,0x882,0xfb06,0x2220, -0x73,0x74,0x53,0x54,0x53,0x74,0x8c0,1,0x2220,0x73,0x74,0x53,0x54,0x53,0x74,0xfb05, -0x880,0x2220,0x574,0x576,0x544,0x546,0x544,0x576,0x880,0x2220,0x574,0x565,0x544,0x535,0x544,0x565, -0x880,0x2220,0x574,0x56b,0x544,0x53b,0x544,0x56b,0x880,0x2220,0x57e,0x576,0x54e,0x546,0x54e,0x576, -0x880,0x2220,0x574,0x56d,0x544,0x53d,0x544,0x56d +0xe5,1,0x212b,0x8c0,3,0x2220,0x73,0x73,0x53,0x53,0x53,0x73,0x1e9e,0xd837,0xdf95,0x844, +0xc5,1,0x212b,0x4810,1,0xce50,0xc7,2,0x49,0x131,0x844,0x49,2,0x69,0x130,0x880, +0x2220,0x2bc,0x6e,0x2bc,0x4e,0x2bc,0x4e,0x806,0x73,0x53,0x810,0xa641,0x809,0x1c6,0x1c5,0x80d, +0x1c6,0x1c4,0x1c5,0x80c,0x1c4,0x1c5,0x809,0x1c9,0x1c8,0x80d,0x1c9,0x1c7,0x1c8,0x80c,0x1c7,0x1c8, +0x809,0x1cc,0x1cb,0x80d,0x1cc,0x1ca,0x1cb,0x80c,0x1ca,0x1cb,0x880,0x2220,0x6a,0x30c,0x4a,0x30c, +0x4a,0x30c,0x809,0x1f3,0x1f2,0x80d,0x1f3,0x1f1,0x1f2,0x80c,0x1f1,0x1f2,0x810,0x2a2b,0x810,0x2a28, +0x810,0x2a3f,0x810,0x2a1f,0x810,0x2a1c,0x810,0x2a1e,0x810,0xa54f,0x810,0xa54b,0x810,0xa567,0x810,0xa528, +0x810,0xa544,0x810,0x29f7,0x810,0xa541,0x810,0x29fd,0x810,0xa566,0x810,0x29e7,0x810,0xa543,0x810,0xa52a, +0x1810,0xa515,0x810,0xa512,0x6800,0x3846,0x3b9,0x399,1,0x1fbe,0x8c0,1,0x3330,0x3b9,0x308,0x301, +0x399,0x308,0x301,0x399,0x308,0x301,0x1fd3,0x841,0x3b2,1,0x3d0,0x841,0x3b5,1,0x3f5,0x841, +0x3b8,2,0x3d1,0x3f4,0x841,0x3b9,2,0x345,0x1fbe,0x841,0x3ba,1,0x3f0,0x841,0x3bc,1, +0xb5,0x841,0x3c0,1,0x3d6,0x841,0x3c1,1,0x3f1,0x4850,0x20,1,0x3c2,0x841,0x3c6,1, +0x3d5,0x841,0x3c9,1,0x2126,0x8c0,1,0x3330,0x3c5,0x308,0x301,0x3a5,0x308,0x301,0x3a5,0x308, +0x301,0x1fe3,0x844,0x392,1,0x3d0,0x844,0x395,1,0x3f5,0x844,0x398,2,0x3d1,0x3f4,0x844, +0x399,2,0x345,0x1fbe,0x844,0x39a,1,0x3f0,0x844,0x39c,1,0xb5,0x844,0x3a0,1,0x3d6, +0x844,0x3a1,1,0x3f1,0x806,0x3c3,0x3a3,0x844,0x3a3,1,0x3c2,0x844,0x3a6,1,0x3d5,0x844, +0x3a9,1,0x2126,0x806,0x3b2,0x392,0x846,0x3b8,0x398,1,0x3f4,0x806,0x3c6,0x3a6,0x806,0x3c0, +0x3a0,0x806,0x3ba,0x39a,0x806,0x3c1,0x3a1,0x841,0x3b8,2,0x398,0x3d1,0x806,0x3b5,0x395,0x841, +0x432,1,0x1c80,0x841,0x434,1,0x1c81,0x841,0x43e,1,0x1c82,0x841,0x441,1,0x1c83,0x841, +0x442,2,0x1c84,0x1c85,0x841,0x44a,1,0x1c86,0x844,0x412,1,0x1c80,0x844,0x414,1,0x1c81, +0x844,0x41e,1,0x1c82,0x844,0x421,1,0x1c83,0x844,0x422,2,0x1c84,0x1c85,0x844,0x42a,1, +0x1c86,0x841,0x463,1,0x1c87,0x844,0x462,1,0x1c87,0x4880,0x20,0x565,0x582,0x810,0x1c60,0x80c, +0x1c90,0x10d0,0x80c,0x1c91,0x10d1,0x80c,0x1c92,0x10d2,0x80c,0x1c93,0x10d3,0x80c,0x1c94,0x10d4,0x80c,0x1c95, +0x10d5,0x80c,0x1c96,0x10d6,0x80c,0x1c97,0x10d7,0x80c,0x1c98,0x10d8,0x80c,0x1c99,0x10d9,0x80c,0x1c9a,0x10da, +0x80c,0x1c9b,0x10db,0x80c,0x1c9c,0x10dc,0x80c,0x1c9d,0x10dd,0x80c,0x1c9e,0x10de,0x80c,0x1c9f,0x10df,0x80c, +0x1ca0,0x10e0,0x80c,0x1ca1,0x10e1,0x80c,0x1ca2,0x10e2,0x80c,0x1ca3,0x10e3,0x80c,0x1ca4,0x10e4,0x80c,0x1ca5, +0x10e5,0x80c,0x1ca6,0x10e6,0x80c,0x1ca7,0x10e7,0x80c,0x1ca8,0x10e8,0x80c,0x1ca9,0x10e9,0x80c,0x1caa,0x10ea, +0x80c,0x1cab,0x10eb,0x80c,0x1cac,0x10ec,0x80c,0x1cad,0x10ed,0x80c,0x1cae,0x10ee,0x80c,0x1caf,0x10ef,0x80c, +0x1cb0,0x10f0,0x80c,0x1cb1,0x10f1,0x80c,0x1cb2,0x10f2,0x80c,0x1cb3,0x10f3,0x80c,0x1cb4,0x10f4,0x80c,0x1cb5, +0x10f5,0x80c,0x1cb6,0x10f6,0x80c,0x1cb7,0x10f7,0x80c,0x1cb8,0x10f8,0x80c,0x1cb9,0x10f9,0x80c,0x1cba,0x10fa, +0x80c,0x1cbd,0x10fd,0x80c,0x1cbe,0x10fe,0x80c,0x1cbf,0x10ff,0xa10,0x97d0,0xa10,8,0x806,0x13f0,0x13f0, +0x806,0x13f1,0x13f1,0x806,0x13f2,0x13f2,0x806,0x13f3,0x13f3,0x806,0x13f4,0x13f4,0x806,0x13f5,0x13f5,0x806, +0x432,0x412,0x806,0x434,0x414,0x806,0x43e,0x41e,0x806,0x441,0x421,0x846,0x442,0x422,1,0x1c85, +0x846,0x442,0x422,1,0x1c84,0x806,0x44a,0x42a,0x806,0x463,0x462,0x806,0xa64b,0xa64a,0xc10,0xbc0, +0x810,0x8a04,0x810,0xee6,0x810,0x8a38,0x841,0x1e61,1,0x1e9b,0x844,0x1e60,1,0x1e9b,0x880,0x2220, +0x68,0x331,0x48,0x331,0x48,0x331,0x880,0x2220,0x74,0x308,0x54,0x308,0x54,0x308,0x880,0x2220, +0x77,0x30a,0x57,0x30a,0x57,0x30a,0x880,0x2220,0x79,0x30a,0x59,0x30a,0x59,0x30a,0x880,0x2220, +0x61,0x2be,0x41,0x2be,0x41,0x2be,0x806,0x1e61,0x1e60,0xcd0,0x1dbf,2,0x20,0x73,0x73,0xd837, +0xdf95,0x880,0x2220,0x3c5,0x313,0x3a5,0x313,0x3a5,0x313,0x880,0x3330,0x3c5,0x313,0x300,0x3a5,0x313, +0x300,0x3a5,0x313,0x300,0x880,0x3330,0x3c5,0x313,0x301,0x3a5,0x313,0x301,0x3a5,0x313,0x301,0x880, +0x3330,0x3c5,0x313,0x342,0x3a5,0x313,0x342,0x3a5,0x313,0x342,0x890,8,0x220,0x1f00,0x3b9,0x1f08, +0x399,0x890,8,0x220,0x1f01,0x3b9,0x1f09,0x399,0x890,8,0x220,0x1f02,0x3b9,0x1f0a,0x399,0x890, +8,0x220,0x1f03,0x3b9,0x1f0b,0x399,0x890,8,0x220,0x1f04,0x3b9,0x1f0c,0x399,0x890,8,0x220, +0x1f05,0x3b9,0x1f0d,0x399,0x890,8,0x220,0x1f06,0x3b9,0x1f0e,0x399,0x890,8,0x220,0x1f07,0x3b9, +0x1f0f,0x399,0xc90,8,0x220,0x1f00,0x3b9,0x1f08,0x399,0xc90,8,0x220,0x1f01,0x3b9,0x1f09,0x399, +0xc90,8,0x220,0x1f02,0x3b9,0x1f0a,0x399,0xc90,8,0x220,0x1f03,0x3b9,0x1f0b,0x399,0xc90,8, +0x220,0x1f04,0x3b9,0x1f0c,0x399,0xc90,8,0x220,0x1f05,0x3b9,0x1f0d,0x399,0xc90,8,0x220,0x1f06, +0x3b9,0x1f0e,0x399,0xc90,8,0x220,0x1f07,0x3b9,0x1f0f,0x399,0x890,8,0x220,0x1f20,0x3b9,0x1f28, +0x399,0x890,8,0x220,0x1f21,0x3b9,0x1f29,0x399,0x890,8,0x220,0x1f22,0x3b9,0x1f2a,0x399,0x890, +8,0x220,0x1f23,0x3b9,0x1f2b,0x399,0x890,8,0x220,0x1f24,0x3b9,0x1f2c,0x399,0x890,8,0x220, +0x1f25,0x3b9,0x1f2d,0x399,0x890,8,0x220,0x1f26,0x3b9,0x1f2e,0x399,0x890,8,0x220,0x1f27,0x3b9, +0x1f2f,0x399,0xc90,8,0x220,0x1f20,0x3b9,0x1f28,0x399,0xc90,8,0x220,0x1f21,0x3b9,0x1f29,0x399, +0xc90,8,0x220,0x1f22,0x3b9,0x1f2a,0x399,0xc90,8,0x220,0x1f23,0x3b9,0x1f2b,0x399,0xc90,8, +0x220,0x1f24,0x3b9,0x1f2c,0x399,0xc90,8,0x220,0x1f25,0x3b9,0x1f2d,0x399,0xc90,8,0x220,0x1f26, +0x3b9,0x1f2e,0x399,0xc90,8,0x220,0x1f27,0x3b9,0x1f2f,0x399,0x890,8,0x220,0x1f60,0x3b9,0x1f68, +0x399,0x890,8,0x220,0x1f61,0x3b9,0x1f69,0x399,0x890,8,0x220,0x1f62,0x3b9,0x1f6a,0x399,0x890, +8,0x220,0x1f63,0x3b9,0x1f6b,0x399,0x890,8,0x220,0x1f64,0x3b9,0x1f6c,0x399,0x890,8,0x220, +0x1f65,0x3b9,0x1f6d,0x399,0x890,8,0x220,0x1f66,0x3b9,0x1f6e,0x399,0x890,8,0x220,0x1f67,0x3b9, +0x1f6f,0x399,0xc90,8,0x220,0x1f60,0x3b9,0x1f68,0x399,0xc90,8,0x220,0x1f61,0x3b9,0x1f69,0x399, +0xc90,8,0x220,0x1f62,0x3b9,0x1f6a,0x399,0xc90,8,0x220,0x1f63,0x3b9,0x1f6b,0x399,0xc90,8, +0x220,0x1f64,0x3b9,0x1f6c,0x399,0xc90,8,0x220,0x1f65,0x3b9,0x1f6d,0x399,0xc90,8,0x220,0x1f66, +0x3b9,0x1f6e,0x399,0xc90,8,0x220,0x1f67,0x3b9,0x1f6f,0x399,0x880,0x2220,0x1f70,0x3b9,0x1fba,0x399, +0x1fba,0x345,0x890,9,0x220,0x3b1,0x3b9,0x391,0x399,0x880,0x2220,0x3ac,0x3b9,0x386,0x399,0x386, +0x345,0x880,0x2220,0x3b1,0x342,0x391,0x342,0x391,0x342,0x880,0x3330,0x3b1,0x342,0x3b9,0x391,0x342, +0x399,0x391,0x342,0x345,0xc90,9,0x220,0x3b1,0x3b9,0x391,0x399,0x846,0x3b9,0x399,1,0x345, +0x880,0x2220,0x1f74,0x3b9,0x1fca,0x399,0x1fca,0x345,0x890,9,0x220,0x3b7,0x3b9,0x397,0x399,0x880, +0x2220,0x3ae,0x3b9,0x389,0x399,0x389,0x345,0x880,0x2220,0x3b7,0x342,0x397,0x342,0x397,0x342,0x880, +0x3330,0x3b7,0x342,0x3b9,0x397,0x342,0x399,0x397,0x342,0x345,0xc90,9,0x220,0x3b7,0x3b9,0x397, +0x399,0x880,0x3330,0x3b9,0x308,0x300,0x399,0x308,0x300,0x399,0x308,0x300,0x882,0x390,0x3330,0x3b9, +0x308,0x301,0x399,0x308,0x301,0x399,0x308,0x301,0x880,0x2220,0x3b9,0x342,0x399,0x342,0x399,0x342, +0x880,0x3330,0x3b9,0x308,0x342,0x399,0x308,0x342,0x399,0x308,0x342,0x880,0x3330,0x3c5,0x308,0x300, +0x3a5,0x308,0x300,0x3a5,0x308,0x300,0x882,0x3b0,0x3330,0x3c5,0x308,0x301,0x3a5,0x308,0x301,0x3a5, +0x308,0x301,0x880,0x2220,0x3c1,0x313,0x3a1,0x313,0x3a1,0x313,0x880,0x2220,0x3c5,0x342,0x3a5,0x342, +0x3a5,0x342,0x880,0x3330,0x3c5,0x308,0x342,0x3a5,0x308,0x342,0x3a5,0x308,0x342,0x880,0x2220,0x1f7c, +0x3b9,0x1ffa,0x399,0x1ffa,0x345,0x890,9,0x220,0x3c9,0x3b9,0x3a9,0x399,0x880,0x2220,0x3ce,0x3b9, +0x38f,0x399,0x38f,0x345,0x880,0x2220,0x3c9,0x342,0x3a9,0x342,0x3a9,0x342,0x880,0x3330,0x3c9,0x342, +0x3b9,0x3a9,0x342,0x399,0x3a9,0x342,0x345,0xc90,9,0x220,0x3c9,0x3b9,0x3a9,0x399,0xc50,0x1d5d, +1,0x3a9,0xc50,0x20bf,1,0x4b,0xc50,0x2046,1,0xc5,0xc10,0x29f7,0xc10,0xee6,0xc10,0x29e7, +0xc10,0x2a2b,0xc10,0x2a28,0xc10,0x2a1c,0xc10,0x29fd,0xc10,0x2a1f,0xc10,0x2a1e,0xc10,0x2a3f,0xc10,0x1c60, +0x841,0xa64b,1,0x1c88,0x844,0xa64a,1,0x1c88,0xc10,0x8a04,0xc10,0xa528,0xc10,0xa544,0xc10,0xa54f, +0xc10,0xa54b,0xc10,0xa541,0xc10,0xa512,0xc10,0xa52a,0xc10,0xa515,0x810,0x3a0,0xc10,0xa543,0xc10,0x8a38, +0xc10,0xa567,0xc10,0xa641,0xc10,0xa566,0xc10,0x3a0,0x806,0x13a0,0x13a0,0x806,0x13a1,0x13a1,0x806,0x13a2, +0x13a2,0x806,0x13a3,0x13a3,0x806,0x13a4,0x13a4,0x806,0x13a5,0x13a5,0x806,0x13a6,0x13a6,0x806,0x13a7,0x13a7, +0x806,0x13a8,0x13a8,0x806,0x13a9,0x13a9,0x806,0x13aa,0x13aa,0x806,0x13ab,0x13ab,0x806,0x13ac,0x13ac,0x806, +0x13ad,0x13ad,0x806,0x13ae,0x13ae,0x806,0x13af,0x13af,0x806,0x13b0,0x13b0,0x806,0x13b1,0x13b1,0x806,0x13b2, +0x13b2,0x806,0x13b3,0x13b3,0x806,0x13b4,0x13b4,0x806,0x13b5,0x13b5,0x806,0x13b6,0x13b6,0x806,0x13b7,0x13b7, +0x806,0x13b8,0x13b8,0x806,0x13b9,0x13b9,0x806,0x13ba,0x13ba,0x806,0x13bb,0x13bb,0x806,0x13bc,0x13bc,0x806, +0x13bd,0x13bd,0x806,0x13be,0x13be,0x806,0x13bf,0x13bf,0x806,0x13c0,0x13c0,0x806,0x13c1,0x13c1,0x806,0x13c2, +0x13c2,0x806,0x13c3,0x13c3,0x806,0x13c4,0x13c4,0x806,0x13c5,0x13c5,0x806,0x13c6,0x13c6,0x806,0x13c7,0x13c7, +0x806,0x13c8,0x13c8,0x806,0x13c9,0x13c9,0x806,0x13ca,0x13ca,0x806,0x13cb,0x13cb,0x806,0x13cc,0x13cc,0x806, +0x13cd,0x13cd,0x806,0x13ce,0x13ce,0x806,0x13cf,0x13cf,0x806,0x13d0,0x13d0,0x806,0x13d1,0x13d1,0x806,0x13d2, +0x13d2,0x806,0x13d3,0x13d3,0x806,0x13d4,0x13d4,0x806,0x13d5,0x13d5,0x806,0x13d6,0x13d6,0x806,0x13d7,0x13d7, +0x806,0x13d8,0x13d8,0x806,0x13d9,0x13d9,0x806,0x13da,0x13da,0x806,0x13db,0x13db,0x806,0x13dc,0x13dc,0x806, +0x13dd,0x13dd,0x806,0x13de,0x13de,0x806,0x13df,0x13df,0x806,0x13e0,0x13e0,0x806,0x13e1,0x13e1,0x806,0x13e2, +0x13e2,0x806,0x13e3,0x13e3,0x806,0x13e4,0x13e4,0x806,0x13e5,0x13e5,0x806,0x13e6,0x13e6,0x806,0x13e7,0x13e7, +0x806,0x13e8,0x13e8,0x806,0x13e9,0x13e9,0x806,0x13ea,0x13ea,0x806,0x13eb,0x13eb,0x806,0x13ec,0x13ec,0x806, +0x13ed,0x13ed,0x806,0x13ee,0x13ee,0x806,0x13ef,0x13ef,0x880,0x2220,0x66,0x66,0x46,0x46,0x46,0x66, +0x880,0x2220,0x66,0x69,0x46,0x49,0x46,0x69,0x880,0x2220,0x66,0x6c,0x46,0x4c,0x46,0x6c, +0x880,0x3330,0x66,0x66,0x69,0x46,0x46,0x49,0x46,0x66,0x69,0x880,0x3330,0x66,0x66,0x6c, +0x46,0x46,0x4c,0x46,0x66,0x6c,0x882,0xfb06,0x2220,0x73,0x74,0x53,0x54,0x53,0x74,0x8c0, +1,0x2220,0x73,0x74,0x53,0x54,0x53,0x74,0xfb05,0x880,0x2220,0x574,0x576,0x544,0x546,0x544, +0x576,0x880,0x2220,0x574,0x565,0x544,0x535,0x544,0x565,0x880,0x2220,0x574,0x56b,0x544,0x53b,0x544, +0x56b,0x880,0x2220,0x57e,0x576,0x54e,0x546,0x54e,0x576,0x880,0x2220,0x574,0x56d,0x544,0x53d,0x544, +0x56d,0x8c2,0xdf,1,0x2220,0x73,0x73,0x53,0x53,0x53,0x73,0x1e9e }; -static const uint16_t ucase_props_unfold[370]={ -0x49,5,3,0,0,0x61,0x2be,0,0x1e9a,0,0x66,0x66,0,0xfb00,0,0x66, -0x66,0x69,0xfb03,0,0x66,0x66,0x6c,0xfb04,0,0x66,0x69,0,0xfb01,0,0x66,0x6c, -0,0xfb02,0,0x68,0x331,0,0x1e96,0,0x69,0x307,0,0x130,0,0x6a,0x30c,0, -0x1f0,0,0x73,0x73,0,0xdf,0x1e9e,0x73,0x74,0,0xfb05,0xfb06,0x74,0x308,0,0x1e97, -0,0x77,0x30a,0,0x1e98,0,0x79,0x30a,0,0x1e99,0,0x2bc,0x6e,0,0x149,0, -0x3ac,0x3b9,0,0x1fb4,0,0x3ae,0x3b9,0,0x1fc4,0,0x3b1,0x342,0,0x1fb6,0,0x3b1, -0x342,0x3b9,0x1fb7,0,0x3b1,0x3b9,0,0x1fb3,0x1fbc,0x3b7,0x342,0,0x1fc6,0,0x3b7,0x342, -0x3b9,0x1fc7,0,0x3b7,0x3b9,0,0x1fc3,0x1fcc,0x3b9,0x308,0x300,0x1fd2,0,0x3b9,0x308,0x301, -0x390,0x1fd3,0x3b9,0x308,0x342,0x1fd7,0,0x3b9,0x342,0,0x1fd6,0,0x3c1,0x313,0,0x1fe4, -0,0x3c5,0x308,0x300,0x1fe2,0,0x3c5,0x308,0x301,0x3b0,0x1fe3,0x3c5,0x308,0x342,0x1fe7,0, -0x3c5,0x313,0,0x1f50,0,0x3c5,0x313,0x300,0x1f52,0,0x3c5,0x313,0x301,0x1f54,0,0x3c5, -0x313,0x342,0x1f56,0,0x3c5,0x342,0,0x1fe6,0,0x3c9,0x342,0,0x1ff6,0,0x3c9,0x342, -0x3b9,0x1ff7,0,0x3c9,0x3b9,0,0x1ff3,0x1ffc,0x3ce,0x3b9,0,0x1ff4,0,0x565,0x582,0, -0x587,0,0x574,0x565,0,0xfb14,0,0x574,0x56b,0,0xfb15,0,0x574,0x56d,0,0xfb17, -0,0x574,0x576,0,0xfb13,0,0x57e,0x576,0,0xfb16,0,0x1f00,0x3b9,0,0x1f80,0x1f88, -0x1f01,0x3b9,0,0x1f81,0x1f89,0x1f02,0x3b9,0,0x1f82,0x1f8a,0x1f03,0x3b9,0,0x1f83,0x1f8b,0x1f04, -0x3b9,0,0x1f84,0x1f8c,0x1f05,0x3b9,0,0x1f85,0x1f8d,0x1f06,0x3b9,0,0x1f86,0x1f8e,0x1f07,0x3b9, -0,0x1f87,0x1f8f,0x1f20,0x3b9,0,0x1f90,0x1f98,0x1f21,0x3b9,0,0x1f91,0x1f99,0x1f22,0x3b9,0, -0x1f92,0x1f9a,0x1f23,0x3b9,0,0x1f93,0x1f9b,0x1f24,0x3b9,0,0x1f94,0x1f9c,0x1f25,0x3b9,0,0x1f95, -0x1f9d,0x1f26,0x3b9,0,0x1f96,0x1f9e,0x1f27,0x3b9,0,0x1f97,0x1f9f,0x1f60,0x3b9,0,0x1fa0,0x1fa8, -0x1f61,0x3b9,0,0x1fa1,0x1fa9,0x1f62,0x3b9,0,0x1fa2,0x1faa,0x1f63,0x3b9,0,0x1fa3,0x1fab,0x1f64, -0x3b9,0,0x1fa4,0x1fac,0x1f65,0x3b9,0,0x1fa5,0x1fad,0x1f66,0x3b9,0,0x1fa6,0x1fae,0x1f67,0x3b9, -0,0x1fa7,0x1faf,0x1f70,0x3b9,0,0x1fb2,0,0x1f74,0x3b9,0,0x1fc2,0,0x1f7c,0x3b9,0, -0x1ff2,0 +static const uint16_t ucase_props_unfold[518]={ +0x49,7,3,0,0,0,0,0x61,0x2be,0,0x1e9a,0,0,0,0x66,0x66, +0,0xfb00,0,0,0,0x66,0x66,0x69,0xfb03,0,0,0,0x66,0x66,0x6c,0xfb04, +0,0,0,0x66,0x69,0,0xfb01,0,0,0,0x66,0x6c,0,0xfb02,0,0, +0,0x68,0x331,0,0x1e96,0,0,0,0x69,0x307,0,0x130,0,0,0,0x6a, +0x30c,0,0x1f0,0,0,0,0x73,0x73,0,0xdf,0x1e9e,0xd837,0xdf95,0x73,0x74,0, +0xfb05,0xfb06,0,0,0x74,0x308,0,0x1e97,0,0,0,0x77,0x30a,0,0x1e98,0, +0,0,0x79,0x30a,0,0x1e99,0,0,0,0x2bc,0x6e,0,0x149,0,0,0, +0x3ac,0x3b9,0,0x1fb4,0,0,0,0x3ae,0x3b9,0,0x1fc4,0,0,0,0x3b1,0x342, +0,0x1fb6,0,0,0,0x3b1,0x342,0x3b9,0x1fb7,0,0,0,0x3b1,0x3b9,0,0x1fb3, +0x1fbc,0,0,0x3b7,0x342,0,0x1fc6,0,0,0,0x3b7,0x342,0x3b9,0x1fc7,0,0, +0,0x3b7,0x3b9,0,0x1fc3,0x1fcc,0,0,0x3b9,0x308,0x300,0x1fd2,0,0,0,0x3b9, +0x308,0x301,0x390,0x1fd3,0,0,0x3b9,0x308,0x342,0x1fd7,0,0,0,0x3b9,0x342,0, +0x1fd6,0,0,0,0x3c1,0x313,0,0x1fe4,0,0,0,0x3c5,0x308,0x300,0x1fe2,0, +0,0,0x3c5,0x308,0x301,0x3b0,0x1fe3,0,0,0x3c5,0x308,0x342,0x1fe7,0,0,0, +0x3c5,0x313,0,0x1f50,0,0,0,0x3c5,0x313,0x300,0x1f52,0,0,0,0x3c5,0x313, +0x301,0x1f54,0,0,0,0x3c5,0x313,0x342,0x1f56,0,0,0,0x3c5,0x342,0,0x1fe6, +0,0,0,0x3c9,0x342,0,0x1ff6,0,0,0,0x3c9,0x342,0x3b9,0x1ff7,0,0, +0,0x3c9,0x3b9,0,0x1ff3,0x1ffc,0,0,0x3ce,0x3b9,0,0x1ff4,0,0,0,0x565, +0x582,0,0x587,0,0,0,0x574,0x565,0,0xfb14,0,0,0,0x574,0x56b,0, +0xfb15,0,0,0,0x574,0x56d,0,0xfb17,0,0,0,0x574,0x576,0,0xfb13,0, +0,0,0x57e,0x576,0,0xfb16,0,0,0,0x1f00,0x3b9,0,0x1f80,0x1f88,0,0, +0x1f01,0x3b9,0,0x1f81,0x1f89,0,0,0x1f02,0x3b9,0,0x1f82,0x1f8a,0,0,0x1f03,0x3b9, +0,0x1f83,0x1f8b,0,0,0x1f04,0x3b9,0,0x1f84,0x1f8c,0,0,0x1f05,0x3b9,0,0x1f85, +0x1f8d,0,0,0x1f06,0x3b9,0,0x1f86,0x1f8e,0,0,0x1f07,0x3b9,0,0x1f87,0x1f8f,0, +0,0x1f20,0x3b9,0,0x1f90,0x1f98,0,0,0x1f21,0x3b9,0,0x1f91,0x1f99,0,0,0x1f22, +0x3b9,0,0x1f92,0x1f9a,0,0,0x1f23,0x3b9,0,0x1f93,0x1f9b,0,0,0x1f24,0x3b9,0, +0x1f94,0x1f9c,0,0,0x1f25,0x3b9,0,0x1f95,0x1f9d,0,0,0x1f26,0x3b9,0,0x1f96,0x1f9e, +0,0,0x1f27,0x3b9,0,0x1f97,0x1f9f,0,0,0x1f60,0x3b9,0,0x1fa0,0x1fa8,0,0, +0x1f61,0x3b9,0,0x1fa1,0x1fa9,0,0,0x1f62,0x3b9,0,0x1fa2,0x1faa,0,0,0x1f63,0x3b9, +0,0x1fa3,0x1fab,0,0,0x1f64,0x3b9,0,0x1fa4,0x1fac,0,0,0x1f65,0x3b9,0,0x1fa5, +0x1fad,0,0,0x1f66,0x3b9,0,0x1fa6,0x1fae,0,0,0x1f67,0x3b9,0,0x1fa7,0x1faf,0, +0,0x1f70,0x3b9,0,0x1fb2,0,0,0,0x1f74,0x3b9,0,0x1fc2,0,0,0,0x1f7c, +0x3b9,0,0x1ff2,0,0,0 }; static const UCaseProps ucase_props_singleton={ @@ -1008,13 +1029,13 @@ static const UCaseProps ucase_props_singleton={ ucase_props_trieIndex+3468, nullptr, 3468, - 10076, + 10252, 0x188, 0xe08, 0x0, 0x0, 0xe0800, - 0x34e4, + 0x3594, nullptr, 0, false, false, 0, nullptr }, { 4,0,0,0 } diff --git a/deps/icu-small/source/common/ucasemap.cpp b/deps/icu-small/source/common/ucasemap.cpp index 8e60671c3a25..07f99a3b67f0 100644 --- a/deps/icu-small/source/common/ucasemap.cpp +++ b/deps/icu-small/source/common/ucasemap.cpp @@ -46,26 +46,33 @@ U_NAMESPACE_USE /* UCaseMap service object -------------------------------------------------- */ -UCaseMap::UCaseMap(const char *localeID, uint32_t opts, UErrorCode *pErrorCode) : +// The public type, unicode/ucasemap.h struct UCaseMap, is an opaque C type. +// We define a parallel C++ type in the ICU namespace for entry point renaming. + +U_NAMESPACE_BEGIN + +UCaseMapImpl::UCaseMapImpl(const char *localeID, uint32_t opts, UErrorCode *pErrorCode) : #if !UCONFIG_NO_BREAK_ITERATION iter(nullptr), #endif caseLocale(UCASE_LOC_UNKNOWN), options(opts) { - ucasemap_setLocale(this, localeID, pErrorCode); + ucasemap_setLocale(reinterpret_cast(this), localeID, pErrorCode); } -UCaseMap::~UCaseMap() { +UCaseMapImpl::~UCaseMapImpl() { #if !UCONFIG_NO_BREAK_ITERATION delete iter; #endif } +U_NAMESPACE_END + U_CAPI UCaseMap * U_EXPORT2 ucasemap_open(const char *locale, uint32_t options, UErrorCode *pErrorCode) { if(U_FAILURE(*pErrorCode)) { return nullptr; } - UCaseMap *csm = new UCaseMap(locale, options, pErrorCode); + UCaseMapImpl *csm = new UCaseMapImpl(locale, options, pErrorCode); if(csm==nullptr) { *pErrorCode = U_MEMORY_ALLOCATION_ERROR; return nullptr; @@ -73,22 +80,22 @@ ucasemap_open(const char *locale, uint32_t options, UErrorCode *pErrorCode) { delete csm; return nullptr; } - return csm; + return reinterpret_cast(csm); } U_CAPI void U_EXPORT2 ucasemap_close(UCaseMap *csm) { - delete csm; + delete reinterpret_cast(csm); } -U_CAPI const char * U_EXPORT2 -ucasemap_getLocale(const UCaseMap *csm) { - return csm->locale; +U_CAPI const char* U_EXPORT2 +ucasemap_getLocale(const UCaseMap* csm U_LIFETIME_BOUND) { + return reinterpret_cast(csm)->locale; } U_CAPI uint32_t U_EXPORT2 ucasemap_getOptions(const UCaseMap *csm) { - return csm->options; + return reinterpret_cast(csm)->options; } U_CAPI void U_EXPORT2 @@ -96,29 +103,30 @@ ucasemap_setLocale(UCaseMap *csm, const char *locale, UErrorCode *pErrorCode) { if(U_FAILURE(*pErrorCode)) { return; } + auto *impl = reinterpret_cast(csm); if (locale != nullptr && *locale == 0) { - csm->locale[0] = 0; - csm->caseLocale = UCASE_LOC_ROOT; + impl->locale[0] = 0; + impl->caseLocale = UCASE_LOC_ROOT; return; } UErrorCode bufferStatus = U_ZERO_ERROR; - int32_t length=uloc_getName(locale, csm->locale, (int32_t)sizeof(csm->locale), &bufferStatus); - if(bufferStatus==U_BUFFER_OVERFLOW_ERROR || (U_SUCCESS(bufferStatus) && length==sizeof(csm->locale))) { + int32_t length=uloc_getName(locale, impl->locale, (int32_t)sizeof(impl->locale), &bufferStatus); + if(bufferStatus==U_BUFFER_OVERFLOW_ERROR || (U_SUCCESS(bufferStatus) && length==sizeof(impl->locale))) { bufferStatus = U_ZERO_ERROR; /* we only really need the language code for case mappings */ - length=uloc_getLanguage(locale, csm->locale, (int32_t)sizeof(csm->locale), &bufferStatus); + length=uloc_getLanguage(locale, impl->locale, (int32_t)sizeof(impl->locale), &bufferStatus); } if(U_FAILURE(bufferStatus)) { *pErrorCode=bufferStatus; - } else if(length==sizeof(csm->locale)) { + } else if(length==sizeof(impl->locale)) { *pErrorCode=U_BUFFER_OVERFLOW_ERROR; } if(U_SUCCESS(*pErrorCode)) { - csm->caseLocale = ucase_getCaseLocale(csm->locale); + impl->caseLocale = ucase_getCaseLocale(impl->locale); } else { - csm->locale[0]=0; - csm->caseLocale = UCASE_LOC_ROOT; + impl->locale[0]=0; + impl->caseLocale = UCASE_LOC_ROOT; } } @@ -127,7 +135,7 @@ ucasemap_setOptions(UCaseMap *csm, uint32_t options, UErrorCode *pErrorCode) { if(U_FAILURE(*pErrorCode)) { return; } - csm->options=options; + reinterpret_cast(csm)->options=options; } /* UTF-8 string case mappings ----------------------------------------------- */ @@ -942,8 +950,9 @@ ucasemap_utf8ToLower(const UCaseMap *csm, char *dest, int32_t destCapacity, const char *src, int32_t srcLength, UErrorCode *pErrorCode) { + auto *impl = reinterpret_cast(csm); return ucasemap_mapUTF8( - csm->caseLocale, csm->options, UCASEMAP_BREAK_ITERATOR_NULL + impl->caseLocale, impl->options, UCASEMAP_BREAK_ITERATOR_NULL dest, destCapacity, src, srcLength, ucasemap_internalUTF8ToLower, nullptr, *pErrorCode); @@ -954,8 +963,9 @@ ucasemap_utf8ToUpper(const UCaseMap *csm, char *dest, int32_t destCapacity, const char *src, int32_t srcLength, UErrorCode *pErrorCode) { + auto *impl = reinterpret_cast(csm); return ucasemap_mapUTF8( - csm->caseLocale, csm->options, UCASEMAP_BREAK_ITERATOR_NULL + impl->caseLocale, impl->options, UCASEMAP_BREAK_ITERATOR_NULL dest, destCapacity, src, srcLength, ucasemap_internalUTF8ToUpper, nullptr, *pErrorCode); @@ -966,8 +976,9 @@ ucasemap_utf8FoldCase(const UCaseMap *csm, char *dest, int32_t destCapacity, const char *src, int32_t srcLength, UErrorCode *pErrorCode) { + auto *impl = reinterpret_cast(csm); return ucasemap_mapUTF8( - UCASE_LOC_ROOT, csm->options, UCASEMAP_BREAK_ITERATOR_NULL + UCASE_LOC_ROOT, impl->options, UCASEMAP_BREAK_ITERATOR_NULL dest, destCapacity, src, srcLength, ucasemap_internalUTF8Fold, nullptr, *pErrorCode); diff --git a/deps/icu-small/source/common/ucasemap_imp.h b/deps/icu-small/source/common/ucasemap_imp.h index bc83c6bd7883..9d5d8fe78ec0 100644 --- a/deps/icu-small/source/common/ucasemap_imp.h +++ b/deps/icu-small/source/common/ucasemap_imp.h @@ -10,6 +10,7 @@ #include "unicode/utypes.h" #include "unicode/ucasemap.h" #include "unicode/uchar.h" +#include "unicode/unistr.h" // for UStringCaseMapper #include "ucase.h" /** @@ -92,25 +93,24 @@ inline UBool ustrcase_isLNS(UChar32 c) { /** Returns nullptr if error. Pass in either locale or locID, not both. */ U_CFUNC -BreakIterator *ustrcase_getTitleBreakIterator( - const Locale *locale, const char *locID, uint32_t options, BreakIterator *iter, - LocalPointer &ownedIter, UErrorCode &errorCode); +BreakIterator* ustrcase_getTitleBreakIterator(const Locale* locale, + const char* locID, + uint32_t options, + BreakIterator* iter U_LIFETIME_BOUND, + LocalPointer& ownedIter, + UErrorCode& errorCode); #endif -U_NAMESPACE_END - -#include "unicode/unistr.h" // for UStringCaseMapper - /* * Internal string casing functions implementing * ustring.h/ustrcase.cpp and UnicodeString case mapping functions. */ -struct UCaseMap : public icu::UMemory { +struct UCaseMapImpl : public icu::UMemory { /** Implements most of ucasemap_open(). */ - UCaseMap(const char *localeID, uint32_t opts, UErrorCode *pErrorCode); - ~UCaseMap(); + UCaseMapImpl(const char *localeID, uint32_t opts, UErrorCode *pErrorCode); + ~UCaseMapImpl(); #if !UCONFIG_NO_BREAK_ITERATION icu::BreakIterator *iter; /* We adopt the iterator, so we own it. */ @@ -120,6 +120,8 @@ struct UCaseMap : public icu::UMemory { uint32_t options; }; +U_NAMESPACE_END + #if UCONFIG_NO_BREAK_ITERATION # define UCASEMAP_BREAK_ITERATOR_PARAM # define UCASEMAP_BREAK_ITERATOR_UNUSED @@ -201,7 +203,6 @@ ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITE * UTF-8 string case mapping function type, used by ucasemap_mapUTF8(). * UTF-8 version of UStringCaseMapper. * All error checking must be done. - * The UCaseMap must be fully initialized, with locale and/or iter set as needed. */ typedef void U_CALLCONV UTF8CaseMapper(int32_t caseLocale, uint32_t options, diff --git a/deps/icu-small/source/common/ucasemap_titlecase_brkiter.cpp b/deps/icu-small/source/common/ucasemap_titlecase_brkiter.cpp index ebc952a97975..90f507f1d926 100644 --- a/deps/icu-small/source/common/ucasemap_titlecase_brkiter.cpp +++ b/deps/icu-small/source/common/ucasemap_titlecase_brkiter.cpp @@ -84,9 +84,10 @@ U_NAMESPACE_END U_NAMESPACE_USE -U_CAPI const UBreakIterator * U_EXPORT2 -ucasemap_getBreakIterator(const UCaseMap *csm) { - return reinterpret_cast(csm->iter); +U_CAPI const UBreakIterator* U_EXPORT2 +ucasemap_getBreakIterator(const UCaseMap* csm U_LIFETIME_BOUND) { + auto *impl = reinterpret_cast(csm); + return reinterpret_cast(impl->iter); } U_CAPI void U_EXPORT2 @@ -94,8 +95,9 @@ ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode if(U_FAILURE(*pErrorCode)) { return; } - delete csm->iter; - csm->iter=reinterpret_cast(iterToAdopt); + auto *impl = reinterpret_cast(csm); + delete impl->iter; + impl->iter=reinterpret_cast(iterToAdopt); } U_CAPI int32_t U_EXPORT2 @@ -111,19 +113,20 @@ ucasemap_utf8ToTitle(UCaseMap *csm, if (U_FAILURE(*pErrorCode)) { return 0; } - if(csm->iter==nullptr) { + auto *impl = reinterpret_cast(csm); + if(impl->iter==nullptr) { LocalPointer ownedIter; BreakIterator *iter = ustrcase_getTitleBreakIterator( - nullptr, csm->locale, csm->options, nullptr, ownedIter, *pErrorCode); + nullptr, impl->locale, impl->options, nullptr, ownedIter, *pErrorCode); if (iter == nullptr) { utext_close(&utext); return 0; } - csm->iter = ownedIter.orphan(); + impl->iter = ownedIter.orphan(); } - csm->iter->setText(&utext, *pErrorCode); + impl->iter->setText(&utext, *pErrorCode); int32_t length=ucasemap_mapUTF8( - csm->caseLocale, csm->options, csm->iter, + impl->caseLocale, impl->options, impl->iter, dest, destCapacity, src, srcLength, ucasemap_internalUTF8ToTitle, nullptr, *pErrorCode); diff --git a/deps/icu-small/source/common/ucat.cpp b/deps/icu-small/source/common/ucat.cpp index 2f7fdcd980c4..4e46b6f25963 100644 --- a/deps/icu-small/source/common/ucat.cpp +++ b/deps/icu-small/source/common/ucat.cpp @@ -28,7 +28,7 @@ static const char SEPARATOR = '%'; * MAX_KEY_LEN or more. */ static char* -_catkey(char* buffer, int32_t set_num, int32_t msg_num) { +_catkey(char* buffer U_LIFETIME_BOUND, int32_t set_num, int32_t msg_num) { int32_t i = 0; i = T_CString_integerToString(buffer, set_num, 10); buffer[i++] = SEPARATOR; @@ -47,9 +47,12 @@ u_catclose(u_nl_catd catd) { } U_CAPI const char16_t* U_EXPORT2 -u_catgets(u_nl_catd catd, int32_t set_num, int32_t msg_num, - const char16_t* s, - int32_t* len, UErrorCode* ec) { +u_catgets(u_nl_catd catd U_LIFETIME_BOUND, + int32_t set_num, + int32_t msg_num, + const char16_t* s U_LIFETIME_BOUND, + int32_t* len, + UErrorCode* ec) { char key[MAX_KEY_LEN]; const char16_t* result; diff --git a/deps/icu-small/source/common/uchar_props_data.h b/deps/icu-small/source/common/uchar_props_data.h index 98af874f0cbc..23a8823058fd 100644 --- a/deps/icu-small/source/common/uchar_props_data.h +++ b/deps/icu-small/source/common/uchar_props_data.h @@ -9,146 +9,147 @@ #ifdef INCLUDED_FROM_UCHAR_C -static const UVersionInfo dataVersion={0x11,0,0,0}; +static const UVersionInfo dataVersion={0x12,0,0,0}; -static const uint16_t propsTrie_index[24108]={ -0x485,0x48d,0x495,0x49d,0x4b5,0x4bd,0x4c5,0x4cd,0x4d5,0x4dd,0x4e3,0x4eb,0x4f3,0x4fb,0x503,0x50b, -0x511,0x519,0x521,0x529,0x52c,0x534,0x53c,0x544,0x54c,0x554,0x550,0x558,0x560,0x568,0x56d,0x575, -0x57d,0x585,0x589,0x591,0x599,0x5a1,0x5a9,0x5b1,0x5ad,0x5b5,0x5ba,0x5c2,0x5c8,0x5d0,0x5d8,0x5e0, -0x5e8,0x5f0,0x5f8,0x600,0x605,0x60d,0x610,0x618,0x620,0x628,0x62e,0x636,0x635,0x63d,0x645,0x64d, -0x65d,0x655,0x665,0x66d,0x673,0x5f0,0x683,0x67b,0x693,0x695,0x69d,0x68b,0x6ad,0x6b3,0x6bb,0x6a5, -0x6cb,0x6d1,0x6d9,0x6c3,0x6e9,0x6ef,0x6f7,0x6e1,0x707,0x70d,0x715,0x6ff,0x725,0x72d,0x735,0x71d, -0x745,0x74b,0x753,0x73d,0x763,0x769,0x771,0x75b,0x781,0x786,0x78e,0x779,0x79e,0x7a5,0x7ad,0x796, -0x631,0x7b5,0x7bd,0x4a5,0x7c5,0x7cc,0x7d4,0x4a5,0x7dc,0x7e4,0x7ec,0x7f1,0x7f9,0x800,0x808,0x4a5, -0x5f0,0x810,0x818,0x820,0x828,0x57d,0x838,0x830,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x840,0x5f0,0x848,0x84c,0x854,0x5f0,0x85a,0x5f0,0x860,0x868,0x870,0x57d,0x57d,0x878, -0x880,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x885,0x88d,0x5f0,0x5f0,0x895,0x89d,0x8a5,0x8ad,0x8b5,0x5f0,0x8bd,0x8c5,0x8cd, -0x8dd,0x5f0,0x8e5,0x8e7,0x8ef,0x8d5,0x5f0,0x8f2,0x906,0x8fa,0x902,0x90e,0x5f0,0x916,0x91c,0x924, -0x92c,0x5f0,0x93c,0x944,0x94c,0x934,0x95c,0x954,0x96c,0x96f,0x977,0x964,0x987,0x97f,0x5f0,0x98e, -0x5f0,0x99d,0x996,0x9a5,0x9ad,0x9b1,0x9b9,0x9c1,0x525,0x9c9,0x9cc,0x9d2,0x9d9,0x9cc,0x54c,0x54c, -0x4d5,0x4d5,0x4d5,0x4d5,0x9e1,0x4d5,0x4d5,0x4d5,0x9f1,0x9f9,0xa01,0xa09,0xa11,0xa15,0xa1d,0x9e9, -0xa35,0xa3d,0xa25,0xa2d,0xa45,0xa4d,0xa55,0xa5d,0xa75,0xa65,0xa6d,0xa7d,0xa85,0xa94,0xa99,0xa8c, -0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa9,0xab1,0x924,0xab4,0xabc,0xac3,0xac8,0xad0, -0x924,0xad6,0xade,0xaee,0xaf1,0x924,0x924,0xae6,0x924,0x924,0x924,0x924,0x924,0xb00,0xb08,0xaf8, -0x924,0x924,0x924,0xb0d,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0xb13,0xb1b,0x924,0xb23,0xb2a, -0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0xaa1,0xaa1,0xaa1,0xaa1,0xb32,0xaa1,0xb39,0xb40, -0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0x924,0xb48,0xb4f,0xb53,0x924,0x924,0x924,0x924, -0x57d,0x585,0x525,0xb5b,0x4d5,0x4d5,0x4d5,0xb63,0x525,0xb6b,0x5f0,0xb71,0xb81,0xb79,0xb79,0x54c, -0xb89,0xb91,0xb99,0x4a5,0xba1,0x924,0x924,0xba8,0x924,0x924,0x924,0x924,0x924,0x924,0xad3,0xbad, -0xbbd,0xbb5,0x631,0x5f0,0xbc5,0x880,0x5f0,0xbcd,0xbd5,0xbd9,0x5f0,0x5f0,0xbde,0x5f0,0x924,0xbe5, -0xbed,0xbf5,0xbfb,0x924,0xbf5,0xc03,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924, -0xc0b,0x5f0,0x5f0,0x5f0,0xc13,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0xc19,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xc1e,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x924,0x924, -0xc26,0xc2d,0xc2f,0x5f0,0xc37,0xc3d,0xc45,0xc4d,0xc52,0x5f0,0x5f0,0xc56,0x5f0,0x5f0,0x5f0,0xc5c, -0xc63,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xc6a,0x5f0,0xc71,0xc77,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xc7f,0x5f0,0x5f0,0x5f0,0xc87,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xc89,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xc90,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0xc97,0x5f0,0x5f0,0x5f0,0xc9e,0xca6,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xcab,0xcb0,0x5f0,0x5f0,0xcb8,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xcbc,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xcc1,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xcbf,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xcc9,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0xccf,0xcd7,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xcdd, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0xce4,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0xce9,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xcee,0x5f0,0x5f0,0x5f0,0xc2a,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0xccb,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xcf4,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0xcfc,0xd03,0xd07,0x5f0,0x5f0,0x5f0,0xcc3,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0xd16,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0xd0e,0x924,0xd1e,0x9a5,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0xd23,0xd2b,0x4d5,0xd3b,0xd33,0x5f0,0x5f0,0xd43,0xd4b,0xd5b,0x4d5,0xd60,0xd68,0xd6e,0xd75,0xd53, -0xd7d,0xd85,0x5f0,0xd8d,0xd9d,0xda0,0xd95,0xda8,0x645,0xdb0,0xdb7,0x8e6,0x693,0xdc7,0xdbf,0xdcf, -0x5f0,0xdd7,0xddf,0xde7,0x5f0,0xdef,0xdf7,0xdff,0xe07,0xe0f,0xe13,0xe1b,0x525,0x525,0x5f0,0xe23, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xe2b,0xe37,0xe2f, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f, -0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0x5f0,0x5f0,0x5f0,0xe4f,0x5f0,0xcc4,0xe56,0xe5b, -0x5f0,0x5f0,0x5f0,0xe63,0x5f0,0x5f0,0x8f1,0x4a5,0xe79,0xe69,0xe71,0x5f0,0x5f0,0xe81,0xe89,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xe8e,0x928,0x5f0,0xe96,0x5f0,0xe9c,0xea0, -0xea8,0xeb0,0xeb7,0xebf,0x5f0,0x5f0,0x5f0,0xec5,0xedd,0x495,0xee5,0xeed,0xef2,0x906,0xecd,0xed5, -0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f, -0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f,0xe3f, -0x1294,0x1294,0x12d4,0x1314,0x1354,0x138c,0x13cc,0x140c,0x1444,0x1484,0x14b0,0x14f0,0x1530,0x1540,0x1580,0x15b4, -0x15f4,0x1624,0x1664,0x16a4,0x16b4,0x16e8,0x1720,0x1760,0x17a0,0x17e0,0x1814,0x1840,0x1880,0x18b8,0x18d4,0x1914, -0xa80,0xac0,0xb00,0xb40,0xb80,0xbab,0xbeb,0x1db,0xc0e,0xa40,0xa40,0xa40,0xc46,0xc86,0x1db,0x1db, -0x1db,0xcc6,0xa40,0xa40,0xa40,0xcf6,0xd36,0xd56,0xa40,0xd7c,0xdbc,0xdfc,0xe3c,0xe7c,0xebc,0xefc, -0xf3c,0xf73,0x1db,0x1db,0xf97,0xfcb,0x1db,0xff3,0x1db,0x1db,0x1db,0x1db,0x1020,0x1db,0x1db,0x1db, -0x1db,0x1db,0x1db,0x1db,0x1034,0x1db,0x1db,0x1074,0x1db,0x107f,0x1db,0x1db,0x1db,0x10b5,0xa40,0x10f5, -0x1db,0x1db,0x1135,0x1db,0x1db,0x1db,0x1152,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +static const uint16_t propsTrie_index[24744]={ +0x4a6,0x4ae,0x4b6,0x4be,0x4d6,0x4de,0x4e6,0x4ee,0x4f6,0x4fe,0x504,0x50c,0x514,0x51c,0x524,0x52c, +0x532,0x53a,0x542,0x54a,0x54d,0x555,0x55d,0x565,0x56d,0x575,0x571,0x579,0x581,0x589,0x58e,0x596, +0x59e,0x5a6,0x5aa,0x5b2,0x5ba,0x5c2,0x5ca,0x5d2,0x5ce,0x5d6,0x5db,0x5e3,0x5e9,0x5f1,0x5f9,0x601, +0x609,0x611,0x619,0x621,0x626,0x62e,0x631,0x639,0x641,0x649,0x64f,0x657,0x656,0x65e,0x666,0x66e, +0x67e,0x676,0x686,0x68e,0x694,0x611,0x6a4,0x69c,0x6b4,0x6b6,0x6be,0x6ac,0x6ce,0x6d4,0x6dc,0x6c6, +0x6ec,0x6f2,0x6fa,0x6e4,0x70a,0x710,0x718,0x702,0x728,0x72e,0x736,0x720,0x746,0x74e,0x756,0x73e, +0x766,0x76c,0x774,0x75e,0x784,0x78a,0x792,0x77c,0x7a2,0x7a7,0x7af,0x79a,0x7bf,0x7c6,0x7ce,0x7b7, +0x652,0x7d6,0x7de,0x4c6,0x7e6,0x7ed,0x7f5,0x4c6,0x7fd,0x805,0x80d,0x812,0x81a,0x821,0x829,0x4c6, +0x611,0x831,0x839,0x841,0x849,0x59e,0x859,0x851,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x861,0x611,0x869,0x86d,0x875,0x611,0x87b,0x611,0x881,0x889,0x891,0x59e,0x59e,0x899, +0x8a1,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x8a6,0x8ae,0x611,0x611,0x8b6,0x8be,0x8c6,0x8ce,0x8d6,0x611,0x8de,0x8e6,0x8ee, +0x8fe,0x611,0x906,0x908,0x910,0x8f6,0x611,0x913,0x927,0x91b,0x923,0x92f,0x611,0x937,0x93d,0x945, +0x94d,0x611,0x95d,0x965,0x96d,0x955,0x56d,0x975,0x985,0x988,0x990,0x97d,0x9a0,0x998,0x611,0x9a7, +0x611,0x9b6,0x9af,0x9be,0x9c6,0x9ca,0x9d2,0x9da,0x546,0x9e2,0x9e5,0x9eb,0x9f2,0x9e5,0x56d,0x56d, +0x4f6,0x4f6,0x4f6,0x4f6,0x9fa,0x4f6,0x4f6,0x4f6,0xa0a,0xa12,0xa1a,0xa22,0xa2a,0xa2e,0xa36,0xa02, +0xa4e,0xa56,0xa3e,0xa46,0xa5e,0xa66,0xa6d,0xa75,0xa8d,0xa7d,0xa85,0xa95,0xa9d,0xaac,0xab1,0xaa4, +0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xac1,0xac9,0x945,0xacc,0xad4,0xadb,0xae0,0xae8, +0x945,0xaee,0xaf6,0xb06,0xb09,0x945,0x945,0xafe,0x945,0x945,0x945,0x945,0x945,0xb18,0xb20,0xb10, +0x945,0x945,0x945,0xb25,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0xb2b,0xb33,0x945,0xb3b,0xb42, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0xab9,0xab9,0xab9,0xab9,0xb4a,0xab9,0xb51,0xb58, +0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0x945,0xb60,0xb67,0xb6b,0x945,0x945,0x945,0x945, +0x59e,0x5a6,0x546,0xb73,0x4f6,0x4f6,0x4f6,0xb7b,0x546,0xb83,0x611,0xb89,0xb99,0xb91,0xb91,0x56d, +0xba9,0xbb1,0xbb9,0xba1,0xbc1,0x945,0x945,0xbc8,0x945,0x945,0x945,0x945,0x945,0x945,0xaeb,0xbcd, +0xbdd,0xbd5,0x652,0x611,0xbe5,0x8a1,0x611,0xbed,0xbf5,0xbf9,0x611,0x611,0xbfe,0x611,0x945,0xc05, +0xc0d,0xc15,0xc1b,0x945,0xc15,0xc23,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0xc2b,0x611,0x611,0x611,0xc33,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0xc39,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xc3e,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x945,0x945, +0xc46,0xc4d,0xc4f,0x611,0xc57,0xc5d,0xc65,0xc6d,0xc72,0x611,0x611,0xc76,0x611,0x611,0x611,0xc7c, +0xc83,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xc8a,0x611,0xc91,0xc97,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xc9f,0x611,0x611,0x611,0xca7,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0xca9,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xcb0,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0xcb7,0x611,0x611,0x611,0xcbe,0xcc6,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0xccb,0xcd0,0x611,0x611,0xcd8,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xcdc,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xce1,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xcdf,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xce9,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0xcef,0xcf7,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xcfd, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0xd04,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0xd09,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0xd0e,0x611,0x611,0x611,0xc4a,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0xceb,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0xd14,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0xd1c,0xd23,0xd27,0x611,0x611,0x611,0xce3,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0xd36,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0xd2e,0x945,0xd3e,0x9be,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0xd43,0xd4b,0x4f6,0xd5b,0xd53,0x611,0x611,0xd63,0xd6b,0xd7b,0x4f6,0xd80,0xd88,0xd8e,0xd95,0xd73, +0xd9d,0xda5,0x611,0xdad,0xdbd,0xdc0,0xdb5,0xdc8,0x666,0xdd0,0xdd7,0x907,0x6b4,0xde7,0xddf,0xdef, +0x611,0xdf7,0xdff,0xe07,0x611,0xe0f,0xe17,0xe1f,0xe27,0xe2f,0xe33,0xe3b,0x546,0x546,0x611,0xe43, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xe4b,0xe57,0xe4f, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f, +0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0x611,0x611,0x611,0xe6f,0x611,0xce4,0xe76,0xe7b, +0x611,0x611,0x611,0xe83,0x611,0x611,0x912,0x4c6,0xe99,0xe89,0xe91,0x611,0x611,0xea1,0xea9,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xeae,0x949,0x611,0xeb6,0x611,0xebc,0xec0, +0xec8,0xed0,0xed7,0xedf,0x611,0x611,0x611,0xee5,0xefd,0x4b6,0xf05,0xf0d,0xf12,0x927,0xeed,0xef5, +0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f, +0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f,0xe5f, +0x1318,0x1318,0x1358,0x1398,0x13d8,0x1410,0x1450,0x1490,0x14c8,0x1508,0x1534,0x1574,0x15b4,0x15c4,0x1604,0x1638, +0x1678,0x16a8,0x16e8,0x1728,0x1738,0x176c,0x17a4,0x17e4,0x1824,0x1864,0x1898,0x18c4,0x1904,0x193c,0x1958,0x1998, +0xa80,0xac0,0xb00,0xb40,0xb80,0xbb5,0xbf5,0x1db,0xc18,0xa40,0xa40,0xa40,0xc50,0xc90,0x1db,0x1db, +0x1db,0xcd0,0xd04,0xa40,0xa40,0xd13,0xd53,0xd73,0xa40,0xd99,0xdd9,0xe19,0xe59,0xe99,0xed9,0xf18, +0xf58,0xf8f,0x1db,0x1db,0xfb3,0xfe7,0x1db,0x100f,0x1db,0x1db,0x1db,0x1db,0x103c,0x1db,0x1db,0x1db, +0x1db,0x1db,0x1db,0x1db,0x1050,0x1db,0x1db,0x1090,0x1db,0x109b,0x1db,0x1db,0x1db,0x10d1,0xa40,0x1111, +0x1db,0x1db,0x1151,0x1db,0x1171,0x1db,0x1198,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0x1db,0x1db,0x1db,0x1db,0x1db,0x11d8, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, @@ -169,511 +170,516 @@ static const uint16_t propsTrie_index[24108]={ 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0x1192,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0x1218,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, 0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700, -0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x11d2, +0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x1258, 0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700, -0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x11d2, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0xefa,0xf01,0xf09,0x4a5,0x5f0,0x5f0,0x5f0,0xf11,0xf21,0xf19,0xf38,0xf29,0xf30,0xf40,0xbad,0xf48, -0x4a5,0x4a5,0x4a5,0x4a5,0x8e6,0x5f0,0xf50,0xf58,0x5f0,0xf60,0xf68,0xf6c,0xf74,0x5f0,0xf7c,0x4a5, -0x57d,0x587,0xf84,0x5f0,0xf88,0xf90,0xfa0,0xf98,0x5f0,0xfa8,0x5f0,0xfaf,0xfbf,0xfb7,0x5f0,0xfc7, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xb81,0x8f2,0xfca,0xfda,0xfd2,0x4a5,0x4a5, -0xfea,0xfe2,0xfed,0xff5,0x906,0xffd,0x4a5,0x1005,0x100d,0x1015,0x8f1,0x4a5,0x5f0,0x1025,0x102d,0x101d, -0x103d,0x1044,0x1035,0x104c,0x1054,0x4a5,0x1064,0x105c,0x5f0,0x1067,0x106f,0x1077,0x107f,0x1087,0x4a5,0x4a5, -0x5f0,0x5f0,0x108f,0x4a5,0x57d,0x1097,0x525,0x109f,0x5f0,0x10a7,0x10be,0x10af,0x10b6,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x10c6,0x5f0,0x10ce,0x10db,0x10d3,0x10e3,0x10eb,0x10f2,0x1001,0x10fa,0x1001,0x1102,0xb81, -0x1112,0x626,0x111a,0x110a,0x987,0x1122,0x112a,0x1130,0x1148,0x1138,0x1140,0x114c,0x987,0x115c,0x1154,0x1164, -0x117c,0x116c,0x1174,0x4a5,0x1183,0x118b,0x648,0x1193,0x11a3,0x11a9,0x11b1,0x119b,0x11c1,0x11c5,0x11cd,0x11b9, -0x5f0,0x11d5,0x11dd,0x11e5,0x5f0,0x11ed,0x11f5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x5f0,0x11fd,0x1205,0x4a5, -0x5f0,0x120d,0x1215,0x121d,0x5f0,0x122d,0x1225,0x1235,0x124d,0x123d,0x1245,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x5f0,0x1255,0x4a5,0x4a5,0x4a5,0x57d,0x525,0x125d,0x126d,0x1273,0x1265,0x4a5,0x4a5,0x1283,0x1287,0x127b, -0x129f,0x128f,0x1297,0x5f0,0x12ad,0x12a7,0x5f0,0x8e7,0x12bd,0x4a5,0x4a5,0x12b5,0x4a5,0x4a5,0x5f0,0x12c5, -0x12db,0x12e0,0x12cd,0x12d5,0x12f0,0x12e8,0x4a5,0x4a5,0x12ff,0x1303,0x12f7,0x131a,0x130b,0x1313,0x131d,0x1325, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x132d,0x133d,0x1342,0x1335,0x4a5,0x4a5,0x134a,0x135a,0x1352, -0x5f0,0x1362,0x5f0,0x1369,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x1370,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x1376,0x5f0,0x5f0,0x5f0,0x137a,0x4a5,0x4a5,0x4a5, -0x138a,0x1392,0x139a,0x1382,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x13a2,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x1001,0x5f0,0x5f0,0x13aa,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x13b2,0x13ba,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xf11,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x1245,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x637,0x13c2, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x8e7,0x906,0xdc3,0x5f0,0x906,0x1313,0x13ca,0x5f0,0x13d2, -0x13da,0x13e2,0xfc8,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x13f2,0x13ea,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x57d,0x525,0x13fa,0x140a,0x1402,0x4a5,0x5f0,0x5f0, -0x1412,0x1417,0x141d,0x4a5,0x4a5,0x1425,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x8f2,0x142b,0x906,0x4a5, -0x4a5,0x4a5,0x5f0,0x5f0,0x5f0,0x1433,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x1438,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x1440, -0x1445,0x144c,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xe2f,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x5f0,0x5f0,0x5f0,0x1452,0x1457,0x145f,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x924,0x924,0x924,0x924, -0x924,0x924,0x924,0x1467,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924, -0x924,0x146f,0x147e,0x1476,0x54c,0x148e,0x1495,0x924,0x924,0x924,0x1486,0x4a5,0x924,0x924,0x924,0x924, -0x924,0x924,0x924,0xad3,0x924,0x149c,0x924,0x14a3,0x14ab,0x14b1,0x924,0xade,0x924,0x924,0x14b9,0x4a5, -0x4a5,0x4a5,0x14c1,0x14c1,0x924,0x924,0x14c9,0x14d1,0x4a5,0x4a5,0x4a5,0x4a5,0x14e1,0x14e8,0x14ed,0x14f3, -0x14fb,0x1503,0x150b,0x14e5,0x1513,0x151b,0x1523,0x1528,0x14fa,0x14e1,0x14e8,0x14e4,0x14f3,0x1530,0x14e2,0x1533, -0x14e5,0x153b,0x1543,0x154b,0x1552,0x153e,0x1546,0x154e,0x1555,0x1541,0x155d,0x14d9,0x924,0x924,0x924,0x924, -0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x54c,0x156d,0x54c,0x1574, -0x157b,0x1565,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x158a,0x1592,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x1582,0x159a,0x9cc,0x15aa, -0x15a2,0x4a5,0x4a5,0x4a5,0x5f0,0x15ba,0x15b2,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x1001,0x15c2,0x5f0,0x15ca,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x1001,0x15d2,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x1001,0x15da,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x906,0x15e2,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x15ea,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x15f2,0x4a5,0x57d,0x1602,0x15fa,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x160a, -0x161a,0x1612,0x4a5,0x4a5,0x162a,0x1622,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x163a,0x1642,0x164a,0x1652, -0x165a,0x1662,0x4a5,0x1632,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x924,0x166a,0x924,0x924, -0xba8,0x149a,0x1672,0xad3,0x167a,0x924,0x924,0x924,0x924,0xad5,0x4a5,0x1682,0x168a,0x168e,0x1696,0x169e, -0x4a5,0x4a5,0x4a5,0x4a5,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x16a6,0x924,0x924,0x924,0x924, -0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924, -0x924,0x924,0x16ae,0x16b1,0x924,0x924,0x924,0x924,0x924,0x924,0xad2,0x16b9,0x166a,0x924,0x16c1,0x924, -0x16c9,0x16ce,0x16d6,0x4a5,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x16e6,0x16de, -0x16ee,0x924,0x16f5,0x16fd,0x924,0x924,0x924,0x924,0x1705,0x924,0x924,0x170a,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x1712,0x5f0,0x5f0,0x1719, -0x5f0,0x5f0,0x5f0,0x1721,0x5f0,0x1729,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xc9b,0x5f0,0x5f0,0x1731, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x1739,0x1741,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0xc2a,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x1748,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x174f,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x1756,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x4a5,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0xf88,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0xe63,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x175e,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xf88,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x5f0,0x5f0,0x5f0,0x5f0,0x1762,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0xf88,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x66d, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x5f0, -0x5f0,0x5f0,0x5f0,0x5f0,0x5f0,0x8f1,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x1772,0x176a,0x176a,0x176a,0x4a5,0x4a5,0x4a5,0x4a5,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c, -0x54c,0x177a,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5,0x4a5, -0x4a5,0x4a5,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47, -0xe47,0x1782,0x484,0x484,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, +0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x1258, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0xf1a,0xf21,0xf29,0x4c6,0x611,0x611,0x611,0xf31,0xf41,0xf39,0xf58,0xf49,0xf50,0xf60,0xbcd,0xf68, +0x4c6,0x4c6,0x4c6,0x4c6,0x907,0x611,0xf70,0xf78,0x611,0xf80,0xf88,0xf8c,0xf94,0x611,0xf9c,0x4c6, +0x59e,0x5a8,0xfa4,0x611,0xfa8,0xfb0,0xfc0,0xfb8,0x611,0xfc8,0x611,0xfcf,0xfdf,0xfd7,0x611,0xfe7, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xb99,0x913,0xfea,0xff9,0xff2,0x4c6,0x4c6, +0x1009,0x1001,0x100c,0x1014,0x927,0x101c,0x4c6,0x1024,0x102c,0x1034,0x912,0x4c6,0x611,0x1044,0x104c,0x103c, +0x105c,0x1063,0x1054,0x106b,0x1073,0x4c6,0x1083,0x107b,0x611,0x1086,0x108e,0x1096,0x109e,0x10a6,0x4c6,0x4c6, +0x611,0x611,0x10ae,0x4c6,0x59e,0x10b6,0x546,0x10be,0x611,0x10c6,0x10dd,0x10ce,0x10d5,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x10e5,0x611,0x10ed,0x10fd,0x10f5,0x1104,0x110c,0x1113,0x1020,0x111b,0x1020,0x1123,0xb99, +0x1133,0x647,0x113b,0x112b,0x9a0,0x1143,0x114b,0x1151,0x1169,0x1159,0x1161,0x116d,0x9a0,0x117d,0x1175,0x1185, +0x119d,0x118d,0x1195,0x4c6,0x11a4,0x11ac,0x669,0x11b4,0x11c4,0x11ca,0x11d2,0x11bc,0x11e2,0x11e6,0x11ee,0x11da, +0x611,0x11f6,0x11fe,0x1206,0x611,0x120e,0x1216,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x611,0x121e,0x1226,0x4c6, +0x611,0x122e,0x1236,0x123e,0x611,0x124e,0x1246,0x1256,0x126e,0x125e,0x1266,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x611,0x1276,0x4c6,0x4c6,0x4c6,0x59e,0x546,0x127e,0x128e,0x1294,0x1286,0x4c6,0x4c6,0x12a4,0x12a8,0x129c, +0x12c0,0x12b0,0x12b8,0x611,0x12ce,0x12c8,0x611,0x908,0x12de,0x4c6,0x4c6,0x12d6,0x4c6,0x4c6,0x611,0x12e6, +0x12fc,0x1301,0x12ee,0x12f6,0x1311,0x1309,0x4c6,0x4c6,0x1320,0x1324,0x1318,0x133b,0x132c,0x1334,0x133e,0x1346, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x134e,0x135e,0x1363,0x1356,0x4c6,0x4c6,0x136b,0x137b,0x1373, +0x611,0x1383,0x611,0x138a,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x1391,0x611,0x611,0x611,0x611,0x611,0x611,0x1397,0x611,0x611,0x611,0x139b,0x4c6,0x4c6,0x4c6, +0x13a9,0x13b1,0x13b9,0x13a3,0x611,0x611,0x611,0x611,0x611,0x611,0x13c1,0x13d9,0x13e1,0x13e9,0x13f1,0x13f9, +0x1401,0x1409,0x1411,0x13c9,0x13d1,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x1020,0x611,0x611,0x1419,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x1421,0x1429,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xf31,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x1266,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x658,0x1431,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x908,0x927,0xde3,0x611,0x927,0x1334,0x1439,0x611,0x1441,0x1449,0x1451,0xfe8,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x1461,0x1459,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x59e,0x546,0x1469,0x1479,0x1471,0x4c6,0x611,0x611,0x1481,0x1486,0x148c,0x4c6,0x4c6,0x1494, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0xf31,0x149a,0x611,0x14a2,0x4c6,0x4c6,0x611,0x611,0x611,0x14aa, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x14b2,0x611,0x14aa,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x14b7,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x14bf,0x14c4,0x14cb,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xe4f,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x611,0x611,0x611,0x14d1,0x14d6,0x14de,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x14e6,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x14ee,0x14fd, +0x14f5,0x56d,0x150d,0x1514,0x945,0x945,0x945,0x1505,0x4c6,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0xaeb,0x945,0x151b,0x945,0x1522,0x152a,0x1530,0x945,0x945,0x945,0x945,0x1538,0x945,0x1540,0x4c6,0x1548, +0x1548,0x945,0x945,0x1550,0x1558,0x4c6,0x4c6,0x4c6,0x4c6,0x1568,0x156f,0x1574,0x157a,0x1582,0x158a,0x1592, +0x156c,0x159a,0x15a2,0x15aa,0x15af,0x1581,0x1568,0x156f,0x156b,0x157a,0x15b7,0x1569,0x15ba,0x156c,0x15c2,0x15ca, +0x15d2,0x15d9,0x15c5,0x15cd,0x15d5,0x15dc,0x15c8,0x15e4,0x1560,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x56d,0x15f4,0x56d,0x15fb,0x1602,0x15ec,0x4c6, +0x4c6,0x160a,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x1612,0x546,0x161a,0x1620,0x1628,0x4c6,0x162e,0x9e5,0x1636,0x163e,0x9e5,0x164e,0x1646,0x4c6,0x4c6, +0x4c6,0x611,0x165e,0x1656,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x1020,0x1666,0x611, +0x166e,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x1020, +0x1676,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x1020,0x167e,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x927, +0x1686,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x168e,0x611,0x611,0x611,0x611,0x611,0x611,0x1696, +0x4c6,0x59e,0x16a6,0x169e,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x16ae,0x16be,0x16b6,0x4c6, +0x4c6,0x16ce,0x16c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x16de,0x16e6,0x16ee,0x16f6,0x16fe,0x1706,0x4c6, +0x16d6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x945,0x170e,0x945,0x945,0xbc8,0x1713,0x1717, +0xaeb,0x171f,0x945,0x945,0x945,0x945,0x1724,0x4c6,0x172b,0x1733,0x1737,0x173f,0x1747,0x4c6,0x4c6,0x4c6, +0x4c6,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x174f,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x1757, +0x175e,0x945,0x945,0x945,0x945,0x945,0x945,0x1737,0x170e,0x945,0x1766,0x945,0x176e,0x1773,0x177b,0x4c6, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x1783,0x175a,0x945,0x945,0x178b,0x1793, +0x945,0x945,0x945,0x945,0x179b,0x945,0x945,0x17a0,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x17a8,0x611,0x611,0x17af,0x611,0x611,0x611,0x17b7, +0x611,0x17bf,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xcbb,0x611,0x611,0x17c7,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x17cf,0x17d7,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0xc4a, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x17de,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x17e5,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x17ec, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x4c6,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x927,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0xe83,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x17f4,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0xfa8,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x611,0x611,0x611,0x611,0x17f8,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0xfa8,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x68e,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x1800,0x611,0x611,0x611,0x611,0x611,0x1801,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x912,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611, +0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x611,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x1811,0x1809,0x1809,0x1809,0x4c6,0x4c6,0x4c6,0x4c6, +0x56d,0x56d,0x56d,0x56d,0x56d,0x56d,0x56d,0x1819,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6, +0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0x4c6,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0x1821,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, -0xf,0xf,0xf,0xf,0xc,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18, -0x17,0x13,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17, -0x18,0x18,0x18,0x17,0x17,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,0x14, -0x17,0x15,0x1a,0x16,0x1a,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,0x14, -0x18,0x15,0x18,0xf,0,0,0,0,0,0,0,0,0,0,0,0, +0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xc,0x17,0x17,0x17,0x19,0x17,0x17,0x17, +0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0x17,0x17,0x18,0x18,0x18,0x17,0x17,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,0x14,0x17,0x15,0x1a,0x16,0x1a,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,0x14,0x18,0x15,0x18,0xf,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, +0,0,0,0,0,0,0,0,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, -0xf,0xf,0xf,0xf,0xc,0x17,0x19,0x19,0x19,0x19,0x1b,0x17,0x1a,0x1b,5,0x1c, -0x18,0x10,0x1b,0x1a,0x1b,0x18,0x34b,0x38b,0x1a,2,0x17,0x17,0x1a,0x30b,5,0x1d, -0x34cb,0x344b,0x3ccb,0x17,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,0x18,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,0x18,2,2,2,2, -2,2,2,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xc,0x17,0x19,0x19,0x19,0x19,0x1b,0x17, +0x1a,0x1b,5,0x1c,0x18,0x10,0x1b,0x1a,0x1b,0x18,0x34b,0x38b,0x1a,2,0x17,0x17, +0x1a,0x30b,5,0x1d,0x34cb,0x344b,0x3ccb,0x17,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x18, +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,0x18, +2,2,2,2,2,2,2,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,1,2,1,2,2,1,2,1, -2,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,1,2,1,2,1,2,2,2,1,1,2, -1,2,1,1,2,1,1,1,2,2,1,1,1,1,2,1, -1,2,1,1,1,2,2,2,1,1,2,1,1,2,1,2, -1,2,1,1,2,1,2,2,1,2,1,1,2,1,1,1, -2,1,2,1,1,2,2,5,1,2,2,2,5,5,5,5, -1,3,2,1,3,2,1,3,2,1,2,1,2,1,2,1, 2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,1,2,1,2,2,1,3,2, -1,2,1,1,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,2,2,2,2,2,2,1,1, -2,1,1,2,2,1,2,1,1,1,1,2,1,2,1,2, -1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2, +1,2,1,2,1,2,1,2,1,1,2,1,2,1,2,2, +2,1,1,2,1,2,1,1,2,1,1,1,2,2,1,1, +1,1,2,1,1,2,1,1,1,2,2,2,1,1,2,1, +1,2,1,2,1,2,1,1,2,1,2,2,1,2,1,1, +2,1,1,1,2,1,2,1,1,2,2,5,1,2,2,2, +5,5,5,5,1,3,2,1,3,2,1,3,2,1,2,1, +2,1,2,1,2,1,2,1,2,1,2,1,2,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +2,1,3,2,1,2,1,1,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,2,2,2,2, +2,2,1,1,2,1,1,2,2,1,2,1,1,1,1,2, +1,2,1,2,1,2,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,5,5,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,5,5,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,4,4,4,4,4, -4,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, -4,4,4,4,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,0x1a,4,0x1a, -0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, -6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,4, +4,4,4,4,4,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, +0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, +4,0x1a,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, +0x1a,0x1a,0x1a,0x1a,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, -1,2,1,2,4,0x1a,1,2,0,0,4,2,2,2,0x17,1, -0,0,0,0,0x1a,0x1a,1,0x17,1,1,1,0,1,0,1,1, -2,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,2,2,2,2, +6,6,6,6,1,2,1,2,4,0x1a,1,2,0,0,4,2, +2,2,0x17,1,0,0,0,0,0x1a,0x1a,1,0x17,1,1,1,0, +1,0,1,1,2,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, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,1,2,2,1,1,1,2,2,2,1,2,1,2, +2,2,2,2,2,2,2,1,2,2,1,1,1,2,2,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,2,2,2,2,1,2,0x18,1,2,1,1,2, -2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,2,1,2,1,2,1,2,2,2,2,2,1,2,0x18,1, +2,1,1,2,2,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,2,2,2,2,2,2,2,2,2,2,2,2, +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,1,2,1,2,1,2,1,2,1,2,1,2, +2,2,2,2,2,2,2,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,0x1b,6,6,6,6,6,7,7,1,2, +1,2,1,2,1,2,1,2,1,2,0x1b,6,6,6,6,6, +7,7,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,1,2,1,2,1,2,1, +2,1,2,1,2,1,2,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,1,2,1,2,1,2,1,2,1,2,1, -2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,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,0, -0,4,0x17,0x17,0x17,0x17,0x17,0x17,2,2,2,2,2,2,2,2, +1,2,1,2,1,2,1,2,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,0,4,4,0x17,0x17,0x17,0x17,0x17,0x17,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,0x17,0x13,0,0,0x1b,0x1b,0x19, -0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +2,2,2,2,2,2,2,2,2,2,2,2,2,0x17,0x13,4, +4,0x1b,0x1b,0x19,0,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,0x13,6, -0x17,6,6,0x17,6,6,0x17,6,0,0,0,0,0,0,0,0, -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,0,0,0,0,5, -5,5,5,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0, -0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x18,0x18,0x17,0x17,0x19,0x17,0x17,0x1b,0x1b, -6,6,6,6,6,6,6,6,6,6,6,0x17,0x10,0x17,0x17,0x17, -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,6, +6,6,0x13,6,0x17,6,6,0x17,6,6,0x17,6,6,6,0,0, +0,0,0,0,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,0, +0,0,0,5,5,5,5,0x17,0x17,0,0,0,0,0,0,0, +0,0,0,0,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x18,0x18,0x17,0x17,0x19, +0x17,0x17,0x1b,0x1b,6,6,6,6,6,6,6,6,6,6,6,0x17, +0x10,0x17,0x17,0x17,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, -4,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6, +5,5,5,5,4,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,6,6, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17,5,5, -6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +6,6,6,6,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17, +0x17,0x17,5,5,6,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,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0x17,5,6,6,6,6,6,6,6,0x10,0x1b,6, -6,6,6,6,6,4,4,6,6,0x1b,6,6,6,6,5,5, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,5,0x1b,0x1b,5, -0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0x10, -5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x17,5,6,6,6,6,6,6, +6,0x10,0x1b,6,6,6,6,6,6,4,4,6,6,0x1b,6,6, +6,6,5,5,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5, +5,0x1b,0x1b,5,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0x17,0,0x10,5,6,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,6, -6,6,6,0,0,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,6,6,6,6,0,0,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,5,6,6,6,6,6,6, -6,6,6,6,6,5,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,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,5,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,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,4,4,0x1b,0x17,0x17,0x17,4,0, -0,6,0x19,0x19,6,6,6,6,4,6,6,6,4,6,6,6, -6,6,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0,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,4,6, -6,6,6,6,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, -0,0,0x17,0,5,5,5,5,5,5,5,5,5,5,5,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0x1a,5,5,5,5,5,5,5,0x10,0x10,0,0, -0,0,0,6,6,6,6,6,6,6,6,6,6,6,0x10,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,5,5,5,5, -5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,6,6,6,6,5,5,6,6, -0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,4,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,8, +5,5,5,6,6,6,6,6,6,6,6,6,4,4,0x1b,0x17, +0x17,0x17,4,0,0,6,0x19,0x19,6,6,6,6,4,6,6,6, +4,6,6,6,6,6,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,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,4,6,6,6,6,6,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,8, -6,5,8,8,8,6,6,6,6,6,6,6,6,8,8,8, -8,6,8,8,5,6,6,6,6,6,6,6,5,5,5,5, -5,5,5,5,5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189, -0x1c9,0x209,0x249,0x289,5,5,0x19,0x19,0x37cb,0x35cb,0x3fcb,0x34cb,0x3ccb,0x94b,0x1b,0x19, -5,0x17,6,0,5,6,8,8,0,5,5,5,5,5,5,5, -5,0,0,5,5,0,0,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,5,5,5,5,5,5,5,0,5,0, -0,0,5,5,5,5,0,0,6,5,8,8,8,6,6,6, -6,0,0,8,8,0,0,8,8,6,5,0,0,0,0,0, -0,0,0,8,0,0,0,0,5,5,0,5,0,0,0,0, -0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,6,6,5,5, -5,6,0x17,0,0,0,0,0,0,0,0,0,0,6,6,8, -0,5,5,5,5,5,5,0,0,0,0,5,5,0,0,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, -5,5,5,5,5,0,5,5,0,5,5,0,5,5,0,0, -6,0,8,8,8,6,6,0,0,0,0,6,6,0,0,6, -6,6,0,0,0,6,0,0,0,0,0,0,0,5,5,5, -5,0,5,0,5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189, -0x1c9,0x209,0x249,0x289,0x17,0x19,0,0,0,0,0,0,0,5,6,6, -6,6,6,6,0,6,6,8,0,5,5,5,5,5,5,5, -5,5,0,5,5,5,0,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,5,5,5,5,5,5,5,0,5,5, -0,5,5,5,5,5,0,0,6,5,8,8,8,6,6,6, -6,6,0,6,6,8,0,8,8,6,0,0,5,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,5,5,6,6, -0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x1b,5,0x34cb,0x344b, -0x3ccb,0x37cb,0x35cb,0x3fcb,0,0,0,0,0,0,0,0,0,6,8,8, -0,5,5,5,5,5,5,5,5,0,0,5,5,0,0,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, -5,5,5,5,5,0,5,5,0,5,5,5,5,5,0,0, -6,5,8,6,8,6,6,6,6,0,0,8,8,0,0,8, -8,6,0,0,0,0,0,0,0,6,6,8,0,0,0,0, -5,5,0,5,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189, -0x1c9,0x209,0x249,0x289,0x7cb,0x1e4b,0x784b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x1b,0, -0,0,0,0,0,0,6,5,0,5,5,5,5,5,5,0, -0,0,5,5,5,0,5,5,5,5,0,0,0,5,5,0, -5,0,5,5,0,0,0,5,5,0,0,0,5,5,5,0, -0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0, -0,0,8,8,6,8,8,0,0,0,8,8,8,0,8,8, -8,6,0,0,5,0,0,0,0,0,0,8,0,0,0,0, -0,0,0,0,5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189, -0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,0,0x17,0x54b,0x58b,0x5cb,0x60b, -0x58b,0x5cb,0x60b,0x1b,6,8,8,8,6,5,5,5,5,5,5,5, -5,0,5,5,5,0,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,0,6,5,6,6,6,8,8,8, -8,0,6,6,6,0,6,6,6,6,0,0,0,0,0,0, -0,6,6,0,5,5,5,0,5,5,0,0,5,5,6,6, -0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,5,5,8, -0,0,0,0,0,0,0,0,0,0,0,0,5,6,8,8, -0x17,5,5,5,5,5,5,5,5,0,5,5,5,0,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, -5,5,5,5,5,5,5,5,0,5,5,5,5,5,0,0, -6,5,8,6,8,8,8,8,8,0,6,8,8,0,8,8, -6,6,0,0,0,0,0,0,0,8,8,0,0,0,0,0, -5,5,5,0,5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189, -0x1c9,0x209,0x249,0x289,0x7cb,0x1e4b,0x784b,0x34cb,0x344b,0x3ccb,0x37cb,0x35cb,0x3fcb,0x1b,5,5, -5,5,5,5,6,6,8,8,5,5,5,5,5,5,5,5, -5,0,5,5,5,0,5,5,5,5,5,5,5,5,5,5, +5,6,6,6,0,0,0x17,0,5,5,5,5,5,5,5,5, +5,5,5,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x1a,5,5,5,5,5,5,5, +0x10,0x10,0,0,0,0,0,6,6,6,6,6,6,6,6,6, +6,6,0x10,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, +5,5,5,5,5,5,5,5,5,4,6,6,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +5,5,6,6,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, +0x17,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +6,6,6,8,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,5,8,8,8,6,6,6,6,0,8,8, -8,0,8,8,8,6,5,0x1b,0,0,0,0,5,5,5,8, -0xcc0b,0xca0b,0xcb4b,0xc90b,0x364b,0xc94b,0x350b,5,0,0,0,0,0,0,0x49,0x89, -0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,8,8,0x17,0,0,0, -0,0,0,0,0,0,0,0,0,6,8,8,0,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, -0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5, -0,5,0,0,5,5,5,5,5,5,5,0,0,0,6,0, -0,0,0,8,8,8,6,6,6,0,6,0,8,8,8,8, -8,8,8,8,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,6,5,5,6,6,6,6,6,6,6,0, -0,0,0,0x19,5,5,5,5,5,5,4,6,6,6,6,6, -6,6,6,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17, -0,0,0,0,0,5,5,0,5,0,5,5,5,5,5,0, +5,5,6,8,6,5,8,8,8,6,6,6,6,6,6,6, +6,8,8,8,8,6,8,8,5,6,6,6,6,6,6,6, +5,5,5,5,5,5,5,5,5,5,6,6,0,0,0x49,0x89, +0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,0x19,0x19,0x37cb,0x35cb,0x3fcb,0x34cb, +0x3ccb,0x94b,0x1b,0x19,5,0x17,6,0,5,6,8,8,0,5,5,5, +5,5,5,5,5,0,0,5,5,0,0,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, +5,0,5,0,0,0,5,5,5,5,0,0,6,5,8,8, +8,6,6,6,6,0,0,8,8,0,0,8,8,6,5,0, +0,0,0,0,0,0,0,8,0,0,0,0,5,5,0,5, +0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, +6,6,5,5,5,6,0x17,0,0,0,0,0,0,0,0,0, +0,6,6,8,0,5,5,5,5,5,5,0,0,0,0,5, +5,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,5,5,5,5,5,5,5,0,5,5,0,5,5,0, +5,5,0,0,6,0,8,8,8,6,6,0,0,0,0,6, +6,0,0,6,6,6,0,0,0,6,0,0,0,0,0,0, +0,5,5,5,5,0,5,0,5,5,6,6,0,0,0x49,0x89, +0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x19,0,0,0,0,0,0, +0,5,6,6,6,6,6,6,0,6,6,8,0,5,5,5, +5,5,5,5,5,5,0,5,5,5,0,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, +5,0,5,5,0,5,5,5,5,5,0,0,6,5,8,8, +8,6,6,6,6,6,0,6,6,8,0,8,8,6,0,0, +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, +0x1b,5,0x34cb,0x344b,0x3ccb,0x37cb,0x35cb,0x3fcb,0,0,0,0,0,0,0,0, +0,6,8,8,0,5,5,5,5,5,5,5,5,0,0,5, +5,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,5,5,5,5,5,5,5,0,5,5,0,5,5,5, +5,5,0,0,6,5,8,6,8,6,6,6,6,0,0,8, +8,0,0,8,8,6,0,0,0,0,0,6,6,6,6,8, +0,0,0,0,5,5,0,5,0,0,0,0,0,0,0x49,0x89, +0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x7cb,0x1e4b,0x784b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x19,0x1b,0,0,0,0,0,0,0,6,5,0,5,5,5, +5,5,5,0,0,0,5,5,5,0,5,5,5,5,0,0, +0,5,5,0,5,0,5,5,0,0,0,5,5,0,0,0, +5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5, +5,5,0,0,0,0,8,8,6,8,8,0,0,0,8,8, +8,0,8,8,8,6,0,0,5,0,0,0,0,0,0,8, +0,0,0,0,0,0,0,0,5,5,6,6,0,0,0x49,0x89, +0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,0,0x17, +0x54b,0x58b,0x5cb,0x60b,0x58b,0x5cb,0x60b,0x1b,6,8,8,8,6,5,5,5, +5,5,5,5,5,0,5,5,5,0,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0,0,6,5,6,6, +6,8,8,8,8,0,6,6,6,0,6,6,6,6,0,0, +0,0,0,0,0,6,6,0,5,5,5,0,5,5,0,0, +5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, +0,5,5,8,0,0,0,0,0,0,0,0,0,0,0,0, +5,6,8,8,0x17,5,5,5,5,5,5,5,5,0,5,5, +5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,5,5,5,5,5,5,5,5,5,5,0,5,5,5, +5,5,0,0,6,5,8,6,8,8,8,8,8,0,6,8, +8,0,8,8,6,6,0,0,0,0,0,0,0,8,8,0, +0,0,0,0,5,5,5,0,5,5,6,6,0,0,0x49,0x89, +0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x7cb,0x1e4b,0x784b,0x34cb,0x344b,0x3ccb,0x37cb,0x35cb, +0x3fcb,0x1b,5,5,5,5,5,5,6,6,8,8,5,5,5,5, +5,5,5,5,5,0,5,5,5,0,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,0,5,0,5,5,5,5,5,5,5,5,5, -5,6,5,5,6,6,6,6,6,6,6,6,6,5,0,0, -5,5,5,5,5,0,4,0,6,6,6,6,6,6,6,0, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,5,5,5,5, -5,0x1b,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0x1b,0x17,0x1b,0x1b,0x1b,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x344b,0x3c4b,0x444b,0x4c4b,0x544b,0x5c4b, -0x644b,0x6c4b,0x744b,0x2c4b,0x1b,6,0x1b,6,0x1b,6,0x14,0x15,0x14,0x15,8,8, -5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,6,6,5,8,8,8,6,6,6, +6,0,8,8,8,0,8,8,8,6,5,0x1b,0,0,0,0, +5,5,5,8,0xcc0b,0xca0b,0xcb4b,0xc90b,0x364b,0xc94b,0x350b,5,0,0,0,0, +0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,8,8, +0x17,0,0,0,0,0,0,0,0,0,0,0,0,6,8,8, +0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5, +5,5,5,5,0,5,0,0,5,5,5,5,5,5,5,0, +0,0,6,0,0,0,0,8,8,8,6,6,6,0,6,0, +8,8,8,8,8,8,8,8,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,6,5,5,6,6,6,6, +6,6,6,0,0,0,0,0x19,5,5,5,5,5,5,4,6, +6,6,6,6,6,6,6,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0x17,0x17,0,0,0,0,0,5,5,0,5,0,5,5, +5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0,5,0,5,5,5,5,5, +5,5,5,5,5,6,5,5,6,6,6,6,6,6,6,6, +6,5,0,0,5,5,5,5,5,0,4,0,6,6,6,6, +6,6,6,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, +5,5,5,5,5,0x1b,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b,0x17,0x1b,0x1b,0x1b,6,6,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x344b,0x3c4b, +0x444b,0x4c4b,0x544b,0x5c4b,0x644b,0x6c4b,0x744b,0x2c4b,0x1b,6,0x1b,6,0x1b,6,0x14,0x15, +0x14,0x15,8,8,5,5,5,5,5,5,5,5,0,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0,0,0,0,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,8,6,6,6,6,6,0x17,6,6,5,5,5,5, -5,6,6,6,6,6,6,6,6,6,6,6,0,6,6,6, +5,5,5,5,5,0,0,0,0,6,6,6,6,6,6,6, +6,6,6,6,6,6,6,8,6,6,6,6,6,0x17,6,6, +5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6, +0,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,0,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b, -0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,0x17,0x17,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,5,5,8,8,6,6,6, -6,8,6,6,6,6,6,6,8,6,6,8,8,6,6,5, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17,0x17,0x17, -5,5,5,5,5,5,8,8,6,6,5,5,5,5,6,6, -6,5,8,8,8,5,5,8,8,8,8,8,8,8,5,5, -5,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5, -5,5,6,8,8,6,6,8,8,8,8,8,8,6,5,8, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,8,8,8,6,0x1b,0x1b, -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,0x17,4,2,2,2, -1,1,1,1,1,1,0,1,0,0,0,0,0,1,0,0, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -5,5,5,5,5,5,5,5,5,0,5,5,5,5,0,0, -5,5,5,5,5,5,5,0,5,0,5,5,5,5,0,0, -5,5,5,5,5,5,5,5,5,0,5,5,5,5,0,0, +6,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,0x17,0x17,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,8, +8,6,6,6,6,8,6,6,6,6,6,6,8,6,6,8, +8,6,6,5,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17, +0x17,0x17,0x17,0x17,5,5,5,5,5,5,8,8,6,6,5,5, +5,5,6,6,6,5,8,8,8,5,5,8,8,8,8,8, +8,8,5,5,5,6,6,6,6,5,5,5,5,5,5,5, +5,5,5,5,5,5,6,8,8,6,6,8,8,8,8,8, +8,6,5,8,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,8,8, +8,6,0x1b,0x1b,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,0x17, +4,2,2,2,1,1,1,1,1,1,0,1,0,0,0,0, +0,1,0,0,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,5,5,5,5,5,5,5,5,5,0,5,5, +5,5,0,0,5,5,5,5,5,5,5,0,5,0,5,5, +5,5,0,0,5,5,5,5,5,5,5,5,5,0,5,5, +5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,0,5,5,5,5,0,0,5,5,5,5, +5,5,5,0,5,0,5,5,5,5,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, +5,5,0,0,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,0, +0,6,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x30b,0x34b,0x38b, +0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b, +0x788b,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,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,0,0,2,2,2,2, +2,2,0,0,0x13,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,0,5,5,5,5,0,0,5,5,5,5,5,5,5,0, -5,0,5,5,5,5,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0,5,5,5,5,0,0, +5,5,5,5,5,0x1b,0x17,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0xc,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,0,0,6,6,6, -0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b, -0x4cb,0x50b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x788b,0,0,0, +5,5,5,0x14,0x15,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,0x17,0x17,0x17,0x98a,0x9ca,0xa0a,5,5,5,5,5,5,5, +5,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,6,6,6,8,0,0, +0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,6,6,8,0x17,0x17,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,6,6,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,0,5,5,5,0,6,6,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,6,6,8,6, +6,6,6,6,6,6,8,8,8,8,8,8,8,8,6,8, +8,6,6,6,6,6,6,6,6,6,6,6,0x17,0x17,0x17,4, +0x17,0x17,0x17,0x19,5,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0,0,0,0,0,0,0x54b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b, +0x74b,0x78b,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,6,5,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x17, +0x17,0x17,0x17,6,6,6,0x10,6,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0,0,0,0,0,0,5,5,5,4,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,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,0,0,2,2,2,2,2,2,0,0, -0x13,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0, +5,5,5,5,5,6,6,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,0x1b,0x17,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0xc,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,0x14, -0x15,0,0,0,5,5,5,5,5,5,5,5,5,5,5,0x17, -0x17,0x17,0x98a,0x9ca,0xa0a,5,5,5,5,5,5,5,5,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,6,6,6,8,0,0,0,0,0,0, -0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,6,6,8,0x17,0x17,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,6,6,0,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,0,5,5,5,0,6,6,0,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,6,6,8,6,6,6,6,6, -6,6,8,8,8,8,8,8,8,8,6,8,8,6,6,6, -6,6,6,6,6,6,6,6,0x17,0x17,0x17,4,0x17,0x17,0x17,0x19, -5,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, -0,0,0,0,0x54b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,6,5,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x17,0x17,0x17,0x17,6, -6,6,0x10,6,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, -0,0,0,0,5,5,5,4,5,5,5,5,5,5,5,5, +5,5,0,0,0,0,0,0,0,0,0,0,6,6,6,8, +8,8,8,6,6,8,8,8,0,0,0,0,8,8,6,8, +8,8,8,8,8,6,6,6,0,0,0,0,0x1b,0,0,0, +0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,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,0,0,0,0,0,0,0,5,5,5,5, -5,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0,0,5,5,5,5, +5,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,0,0,0,0,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, -0,0,0,0,0,0,0,0,6,6,6,8,8,8,8,6, -6,8,8,8,0,0,0,0,8,8,6,8,8,8,8,8, -8,6,6,6,0,0,0,0,0x1b,0,0,0,0x17,0x17,0x49,0x89, -0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,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,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,0,5,5,5,5,5,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x30b,0,0,0,0x1b,0x1b, +0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x30b,0, +0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -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,8,8,6,0,0,0x17,0x17, -0x17,0x17,0x17,0x17,0x17,0x17,0x17,4,0x17,0x17,0x17,0x17,0x17,0x17,0,0, -6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,6, +0x1b,0x1b,0x1b,0x1b,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,8,8,6, +0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,4,0x17,0x17,0x17,0x17, +0x17,0x17,0,0,6,6,6,6,6,6,6,6,6,6,6,6, +6,6,7,6,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,8,6,8,6,6,6,6, +6,6,6,0,6,8,6,8,8,6,6,6,6,6,6,6, +6,8,8,8,8,8,8,6,6,6,6,6,6,6,6,6, +6,0,0,6,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, +0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, +0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6, +6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6, +6,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x17,0x17,0x17,6,6,6,6,8,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,8,6,8,6,6,6,6,6,6,6,0, -6,8,6,8,8,6,6,6,6,6,6,6,6,8,8,8, -8,8,8,6,6,6,6,6,6,6,6,6,6,0,0,6, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, -6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -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,0,0, -0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,6,6,6, -6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x17,0x17,0x17, -6,6,6,6,8,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,6,8,6,6,6,6,6,8,6,8,8,8, +8,8,6,8,8,5,5,5,5,5,5,5,5,0,0x17,0x17, +0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17,0x17,0x17, +5,8,6,6,6,6,8,8,6,6,8,6,6,6,5,5, +0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,5,5,5,5, +6,6,8,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,8,6,6,6,6,6,8,6,8,8,8,8,8,6,8, -8,5,5,5,5,5,5,5,5,0,0x17,0x17,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17,0x17,0x17,5,8,6,6, -6,6,8,8,6,6,8,6,6,6,5,5,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,5,5,5,5,6,6,8,5, +5,5,6,8,6,6,8,8,8,6,8,6,6,6,8,8, +0,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,5,5,5,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,5,5,5,5,8,8,8,8, +8,8,8,8,6,6,6,6,6,6,6,6,8,8,6,6, +0,0,0,0x17,0x17,0x17,0x17,0x17,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,8, -6,6,8,8,8,6,8,6,6,6,8,8,0,0,0,0, -0,0,0,0,0x17,0x17,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,0,0,0,5,5,5,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,5,5,5,5,5,5,8,8,8,8,8,8,8,8, -6,6,6,6,6,6,6,6,8,8,6,6,0,0,0,0x17, -0x17,0x17,0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4, -4,4,0x17,0x17,2,2,2,2,2,2,2,2,2,1,2,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,0, -0,1,1,1,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0, -0,0,0,0,6,6,6,0x17,6,6,6,6,6,6,6,6, -6,6,6,6,6,8,6,6,6,6,6,6,6,5,5,5, -5,6,5,5,5,5,5,5,6,5,5,8,6,6,5,0, -0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,0x17,0x17,2,2,2,2,2,2,2,2, +2,1,2,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,0,0,1,1,1,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0,0,0,0,0,0,0,0,6,6,6,0x17,6,6,6,6, +6,6,6,6,6,6,6,6,6,8,6,6,6,6,6,6, +6,5,5,5,5,6,5,5,5,5,5,5,6,5,5,8, +6,6,5,0,0,0,0,0,2,2,2,2,2,2,2,2, +2,2,2,2,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,2,2,2,2,2,2,2,2,2,2,2,2,2, -4,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,4, -4,4,4,4,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,1,2,2,2,2,2,2,2, -2,2,1,2,2,2,2,2,2,2,2,2,1,1,1,1, -1,0x1a,0x1a,0x1a,0,0,2,2,2,0,2,2,1,1,1,1, -3,0x1a,0x1a,0,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,0,0,1,1,1,1, -1,1,0,0,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,0,0,1,1,1,1, -1,1,0,0,2,2,2,2,2,2,2,2,0,1,0,1, -0,1,0,1,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,0,0,2,2,2,2,2,2,2,2,3,3,3,3, -3,3,3,3,2,2,2,2,2,2,2,2,3,3,3,3, -3,3,3,3,2,2,2,2,2,0,2,2,1,1,1,1, -3,0x1a,2,0x1a,0x1a,0x1a,2,2,2,0,2,2,1,1,1,1, -3,0x1a,0x1a,0x1a,2,2,2,2,0,0,2,2,1,1,1,1, -0,0x1a,0x1a,0x1a,0x16,0x17,0x17,0x17,0x18,0x14,0x15,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0xc,0x10,0x10,0x10,0x10,0x10,0,0x10,0x10,0x10,0x10,0x10,0x10, -0x10,0x10,0x10,0x10,0x2cb,4,0,0,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x18,0x18, -0x18,0x14,0x15,4,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0x10, -0x10,0x10,0x10,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x17,0x17,0x1c,0x1d,0x14,0x1c, -0x1c,0x1d,0x14,0x1c,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xd,0xe,0x10,0x10, -0x10,0x10,0x10,0xc,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1c,0x1d,0x17, -0x17,0x17,0x17,0x16,0x2cb,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x18,0x18, -0x18,0x14,0x15,0,4,4,4,4,4,4,4,4,4,4,4,4, -4,0,0,0,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,2, +2,2,2,2,4,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,4,4,4,4,4,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,2,2, +2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2, +1,1,1,1,1,0x1a,0x1a,0x1a,0,0,2,2,2,0,2,2, +1,1,1,1,3,0x1a,0x1a,0,2,2,2,2,2,2,2,2, +1,1,1,1,1,1,1,1,2,2,2,2,2,2,0,0, +1,1,1,1,1,1,0,0,2,2,2,2,2,2,2,2, +1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, +1,1,1,1,1,1,1,1,2,2,2,2,2,2,0,0, +1,1,1,1,1,1,0,0,2,2,2,2,2,2,2,2, +0,1,0,1,0,1,0,1,2,2,2,2,2,2,2,2, +1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2, +3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2, +3,3,3,3,3,3,3,3,2,2,2,2,2,0,2,2, +1,1,1,1,3,0x1a,2,0x1a,0x1a,0x1a,2,2,2,0,2,2, +1,1,1,1,3,0x1a,0x1a,0x1a,2,2,2,2,0,0,2,2, +1,1,1,1,0,0x1a,0x1a,0x1a,0x16,0x17,0x17,0x17,0x18,0x14,0x15,0x17, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x17,0x16,0x17,0x17,0x17, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xc,0x10,0x10,0x10,0x10,0x10,0,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x2cb,4,0,0,0x3cb,0x40b,0x44b,0x48b, +0x4cb,0x50b,0x18,0x18,0x18,0x14,0x15,4,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, +0xc,0xc,0xc,0x10,0x10,0x10,0x10,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x17,0x17, +0x1c,0x1d,0x14,0x1c,0x1c,0x1d,0x14,0x1c,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0xd,0xe,0x10,0x10,0x10,0x10,0x10,0xc,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0x1c,0x1d,0x17,0x17,0x17,0x17,0x16,0x2cb,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b, +0x4cb,0x50b,0x18,0x18,0x18,0x14,0x15,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, -0x19,0x19,0x19,0x19,0x19,0x19,0,0,0,0,0,0,0,0,0,0, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0,0,0,0,0,0,0, 0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6, 6,7,7,7,7,6,7,7,7,6,6,6,6,6,6,6, 6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0, @@ -750,6 +756,8 @@ static const uint16_t propsTrie_index[24108]={ 5,5,5,0,5,5,5,5,5,5,5,0,5,5,5,5, 5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0, +0,0,0,0,0x17,0x17,0x14,0x15,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0x17,0x17,0x1c,0x1d,0x1c,0x1d,0x17,0x17,0x17,0x1c,0x1d,0x17, 0x1c,0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x17,0x17,0x13,0x17, 0x1c,0x1d,0x17,0x17,0x1c,0x1d,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17, @@ -864,7 +872,7 @@ static const uint16_t propsTrie_index[24108]={ 5,5,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x54a,6,6,0x17,0x17, 0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0x1a,0x1a,0x1a,0x1a, 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, -0x1a,0x1a,0x1a,4,4,4,4,4,4,4,4,4,0,0,0,0, +0x1a,0x1a,0x1a,4,4,4,4,4,4,4,4,4,0,0,1,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4, 4,1,2,5,4,4,2,5,5,5,5,5,0x1a,0x1a,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,2,2,1,2, @@ -875,7 +883,7 @@ static const uint16_t propsTrie_index[24108]={ 1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,2, 1,2,1,2,1,2,1,2,1,1,1,1,2,1,2,1, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,0,0,0,5,5,6,5,5,5,6,5,5,5,5,6, +1,1,0,0,5,5,6,5,5,5,6,5,5,5,5,6, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,8,8,6,6,8,0x1b,0x1b,0x1b,0x1b, 6,0,0,0,0x34cb,0x344b,0x3ccb,0x37cb,0x35cb,0x3fcb,0x1b,0x1b,0x19,0x1b,0,0, @@ -915,7 +923,7 @@ static const uint16_t propsTrie_index[24108]={ 5,5,5,0,5,5,5,5,5,5,5,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,0x1a,4,4,4,4,2,2,2,2, -2,2,2,2,2,4,0x1a,0x1a,0,0,0,0,2,2,2,2, +2,2,2,2,2,4,0x1a,0x1a,1,1,0,0,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,8, 8,6,8,8,6,8,8,0x17,8,6,0,0,0x49,0x89,0xc9,0x109, 0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,5,5,5,5, @@ -1026,375 +1034,408 @@ static const uint16_t propsTrie_index[24108]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4,4,0,4,4,4,4,4,4, -4,4,4,0,0,0,0,0,4,4,4,4,4,4,0,4, +4,4,4,4,4,4,4,4,4,4,0,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,0,5, -5,0,0,0,5,0,0,5,5,5,5,5,5,5,0,0, -5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,0x17,0x58b,0x5cb,0x60b,0x7cb, -0xa4b,0x1e4b,0x784b,0x788b,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,0x1b,0x1b,0x58b,0x5cb,0x60b, -0x64b,0x68b,0x7cb,0xa4b,0,0,0,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x64b, -0x68b,0x7cb,0xa4b,0x1e4b,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0,5,5,0,0,0,0,0,0x58b, -0x68b,0x7cb,0xa4b,0x1e4b,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0x58b,0x7cb,0xa4b,0x1e4b,0x5cb,0x60b, -0,0,0,0x17,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,0,0, -0,0,0,0x17,0xa04b,0xa84b,0xb04b,0xb84b,0x788b,0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b, -0xb88b,0x78cb,0x80cb,0x88cb,0x90cb,0x98cb,0xa0cb,0xa8cb,0xb0cb,0xb8cb,0x36cb,0x354b,0x34cb,0x348b,0x46cb,0x344b, -0x4ecb,0x388b,0x3ccb,0x454b,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0, -0x5ecb,0x344b,5,5,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb, -0xf4b,0x11cb,0x144b,0x16cb,0,0,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x784b, -0x804b,0x884b,0x904b,0x984b,0x30b,0x34b,0x38b,0x3cb,0x7cb,0xa4b,0x1e4b,0x784b,0x344b,0,0,0, -0,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0, -0,0,0,0,5,6,6,6,0,6,6,0,0,0,0,0, -6,6,6,6,5,5,5,5,0,5,5,5,0,5,5,5, +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,0,5,5,0,0,0, +5,0,0,5,5,5,5,5,5,5,0,0,5,0,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,0,6,6,6,0,0,0,0,6, +5,5,5,5,5,5,0,0x17,0x58b,0x5cb,0x60b,0x7cb,0xa4b,0x1e4b,0x784b,0x788b, 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,0x58b,0x11cb,0x17, +5,5,5,5,5,5,5,0x1b,0x1b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x7cb,0xa4b, +0,0,0,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x64b,0x68b,0x7cb,0xa4b,0x1e4b, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 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,0x58b,0x7cb,0xa4b, -5,5,5,5,5,6,6,0,0,0,0,0x58b,0x68b,0x7cb,0xa4b,0x1e4b, -0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0, -5,5,5,5,5,5,5,5,0x1b,5,5,5,5,5,5,5, +5,5,5,0,5,5,0,0,0,0,0,0x58b,0x68b,0x7cb,0xa4b,0x1e4b, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5, +5,5,5,5,5,5,0x58b,0x7cb,0xa4b,0x1e4b,0x5cb,0x60b,0,0,0,0x17, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0,0,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0x784b,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, -0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0x784b,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, -0,0,0,0,0,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0, -0,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,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,1,1,1,1,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,0, -0,0,0,0,0,0,0x58b,0x68b,0x7cb,0x11cb,0x1e4b,0x784b,5,5,5,5, -6,6,6,6,0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,1,1,1,1, -1,1,0,0,0,6,6,6,6,6,0x13,4,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0, -0,0,0,0,0,0,0x18,0x18,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,5,5,5,5,4,5,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb, -0x50b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b, -0xa80b,0xb00b,0xb80b,0x344b,0x34cb,0x348b,0x388b,0,5,5,5,5,5,5,5,5, -5,5,0,6,6,0x13,0,0,5,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,6,6,6,6,6,6,0,0,5,5, -5,4,5,5,0,0,0,0,0,0,0,0,0x17,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0x17, +0xa04b,0xa84b,0xb04b,0xb84b,0x788b,0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0x78cb,0x80cb,0x88cb, +0x90cb,0x98cb,0xa0cb,0xa8cb,0xb0cb,0xb8cb,0x36cb,0x354b,0x34cb,0x348b,0x46cb,0x344b,0x4ecb,0x388b,0x3ccb,0x454b, 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,0x58b,0x5cb,0x60b,0x64b,0x68b,0x7cb,0xa4b, -0xccb,0x1e4b,0x344b,5,0,0,0,0,0,0,0,0,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,0x58b,0x7cb,0xa4b,0x1e4b,0x17,0x17,0x17, -0x17,0x17,0,0,0,0,0,0,5,5,6,6,6,6,0x17,0x17, -0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,0x58b,0x5cb,0x60b, -0x64b,0x7cb,0xa4b,0x1e4b,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x784b,0x49,0x89, -0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,6,5,5,6,6,5,0,0, -0,0,0,0,0,0,0,6,8,6,8,5,5,5,5,5, +5,5,5,5,5,5,5,5,0,0,0,0,0x5ecb,0x344b,5,5, +0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb, +0,0,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0x984b, +0x30b,0x34b,0x38b,0x3cb,0x7cb,0xa4b,0x1e4b,0x784b,0x344b,0,0,0,0,0,0,0, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0, +5,6,6,6,0,6,6,0,0,0,0,0,6,6,6,6, +5,5,5,5,0,5,5,5,0,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,0x17, -0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b, -0x48b,0x4cb,0x50b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,8,8,8,6,6,6,6,8, -8,6,6,0x17,0x17,0x10,0x17,0x17,0x17,0x17,6,0,0,0,0,0, -0,0,0,0,0,0x10,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, -5,5,5,5,5,5,5,6,6,6,6,6,8,6,6,6, -6,6,6,6,6,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, -0x17,0x17,0x17,0x17,5,8,8,5,0,0,0,0,0,0,0,0, +5,5,0,0,6,6,6,0,0,0,0,6,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0x58b,0x11cb,0x17,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,6,0x17,0x17,5,0,0,0,0,0,0,0,0,0, -8,5,5,5,5,0x17,0x17,0x17,0x17,6,6,6,6,0x17,8,6, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,0x17,5,0x17,0x17,0x17, +5,5,5,5,5,5,5,5,5,0x58b,0x7cb,0xa4b,5,5,5,5, +5,6,6,0,0,0,0,0x58b,0x68b,0x7cb,0xa4b,0x1e4b,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,5,5,5,5, +5,5,5,5,0x1b,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,0,0, +0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, +0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0x784b,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0, +0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0x784b,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0, +0,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0, +0,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,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,1,1,1,1,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,0,0,0,0,0, +0,0,0x58b,0x68b,0x7cb,0x11cb,0x1e4b,0x784b,5,5,5,5,6,6,6,6, +0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0,0,0,0,0,0,1,1,1,1,1,1,0,0, +0,6,6,6,6,6,0x13,4,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0, +0,0,0x18,0x18,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5, +5,5,4,5,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0xa4b,0xccb, +0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x344b, +0x34cb,0x348b,0x388b,0,5,5,5,5,5,5,5,5,5,5,0,6, +6,0x13,0,0,5,5,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,0,6,6,6,6,6,6,6,6,6,6,6,6, +6,6,6,6,0,0,5,5,5,4,5,5,0,0x1a,0x1a,6, +6,6,6,6,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,8,8,8,6,6,6,6,6,6,6,6,6,8, -0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b, -0x16cb,0x194b,0x1bcb,0x1e4b,0x784b,0,0,0,0,0,0,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,5,5,5,8,8,8,6, -6,6,8,8,6,8,6,6,0x17,0x17,0x17,0x17,0x17,0x17,6,5, -5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x58b,0x5cb,0x60b, +0x64b,0x68b,0x7cb,0xa4b,0xccb,0x1e4b,0x344b,5,0,0,0,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0,5,0,5,5,5,5,0,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5, -5,5,5,5,5,0x17,0,0,0,0,0,0,5,5,5,5, +5,5,6,6,6,6,6,6,6,6,6,6,6,0x58b,0x7cb,0xa4b, +0x1e4b,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,5,5,6,6, +6,6,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, +5,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x144b,0x16cb,0x194b,0x1bcb, +0x1e4b,0x784b,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,6,5,5,6, +6,5,0,0,0,0,0,0,0,0,0,6,8,6,8,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,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0x30b,0x34b, +0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,8,8,8,6, -6,6,6,6,6,6,6,0,0,0,0,0,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,5,5,8,8, -0,0,6,6,6,6,6,6,6,0,0,0,6,6,6,6, -6,0,0,0,0,0,0,0,0,0,0,0,6,6,8,8, -0,5,5,5,5,5,5,5,5,0,0,5,5,0,0,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, -5,5,5,5,5,0,5,5,0,5,5,5,5,5,0,6, -6,5,8,8,6,8,8,8,8,0,0,8,8,0,0,8, -8,8,0,0,5,0,0,0,0,0,0,8,0,0,0,0, -0,5,5,5,0,6,6,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,0,5, -0,0,5,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,5,8,8,8,6, -6,6,6,6,6,0,8,0,0,8,0,8,8,8,8,0, -8,8,6,8,6,5,6,5,0x17,0x17,0,0x17,0x17,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,8,8,8,6,6,6,6, -6,6,6,6,8,8,6,6,6,8,6,5,5,5,5,0x17, -0x17,0x17,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17, -0,0x17,6,5,5,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,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,8,8,8,6,6,6,6,6,6,8,6,8, -8,8,8,6,6,8,6,6,5,5,0x17,5,0,0,0,0, +6,6,6,8,8,6,6,0x17,0x17,0x10,0x17,0x17,0x17,0x17,6,0, +0,0,0,0,0,0,0,0,0,0x10,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, 0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, +0,0,0,0,5,5,5,5,5,5,5,6,6,6,6,6, +8,6,6,6,6,6,6,6,6,0,0x49,0x89,0xc9,0x109,0x149,0x189, +0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17,5,8,8,5,0,0,0,0, 0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,8,8,8,6,6,6,6,0,0,8,8,8,8, -6,6,8,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5, -6,6,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,8,8,8,6,6,6,6,6,6,6,6,8, -8,6,8,6,6,0x17,0x17,0x17,5,0,0,0,0,0,0,0, -0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, -0,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, -0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x49,0x89, -0xc9,0x109,0x149,0x189,5,5,5,5,5,5,5,5,5,5,5,6, -8,6,8,8,6,6,6,6,6,6,8,6,5,0x17,0,0, -0,0,0,0,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,8,8,6,6,6,6,8,6,6,6,6,6, -0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x7cb,0xa4b, -0x17,0x17,0x17,0x1b,5,5,5,5,5,5,5,0,0,0,0,0, +5,5,5,5,6,6,6,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,0x17,0x17,5,0,0,0,0,0, +0,0,0,0,8,5,5,5,5,0x17,0x17,0x17,0x17,6,6,6, +6,0x17,8,6,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,0x17, +5,0x17,0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,8,8,8,6,6,6,6,6,6, +6,6,6,8,0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b, +0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x784b,0,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +8,8,8,6,6,6,8,8,6,8,6,6,0x17,0x17,0x17,0x17, +0x17,0x17,6,5,5,6,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,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,0, -0,6,8,6,5,5,5,5,5,5,5,5,5,5,5,5, -8,8,8,6,6,6,6,6,6,6,6,6,8,6,6,0x17, -0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x7cb,0xa4b, -0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0,0,0,0,0,0,0,0,0, -0,0,0,5,8,5,8,6,0x17,0x17,0x17,0,0,0,0,0, -0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, -0,0,0,0,5,5,5,5,5,5,5,0,0,5,0,0, -5,5,5,5,5,5,5,5,0,5,5,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,8,8,8,8, -8,8,0,8,8,0,0,6,6,8,6,5,6,5,0x17,5, -8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,0,0,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,0,5,0,5,5,5,5,0,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,5, +5,5,5,5,5,5,5,5,5,0x17,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +8,8,8,6,6,6,6,6,6,6,6,0,0,0,0,0, +0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, +5,5,8,8,0,0,6,6,6,6,6,6,6,0,0,0, +6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0, +6,6,8,8,0,5,5,5,5,5,5,5,5,0,0,5, +5,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,5,5,5,5,5,5,5,0,5,5,0,5,5,5, +5,5,0,6,6,5,8,8,6,8,8,8,8,0,0,8, +8,0,0,8,8,8,0,0,5,0,0,0,0,0,0,8, +0,0,0,0,0,5,5,5,0,6,6,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,0,5,0,0,5,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,5, +8,8,8,6,6,6,6,6,6,0,8,0,0,8,0,8, +8,8,8,0,8,8,6,8,6,5,6,5,0x17,0x17,0,0x17, +0x17,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,8,8,8, -6,6,6,6,0,0,6,6,8,8,8,8,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,8,5,6,6,6,6,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,6,0,0,0,0,0,0,0,0,5,6,6,6, -6,6,6,8,8,6,6,6,5,5,5,5,5,6,6,6, -6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0x17,0x17,0x17,0, -0,0,0,0,0,0,0,0,0,0,0,0,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,8,6,6,0x17,0x17, -0x17,5,0x17,0x17,6,8,6,6,6,8,6,8,0,0,0,0, +6,6,6,6,6,6,6,6,8,8,6,6,6,8,6,5, +5,5,5,0x17,0x17,0x17,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0x17,0x17,0,0x17,6,5,5,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,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,8,8,8,6,6,6,6,6, +6,8,6,8,8,8,8,6,6,8,6,6,5,5,0x17,5, +0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,8,8,8,6,6,6,6,0,0, +8,8,8,8,6,6,8,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +5,5,5,5,6,6,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,8,8,8,6,6,6,6,6, +6,6,6,8,8,6,8,6,6,0x17,0x17,0x17,5,0,0,0, +0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189,5,5,5,5,5,5,5,5, +5,5,5,6,8,6,8,8,6,6,6,6,6,6,8,6, +5,0x17,0,0,0,0,0,0,0x1c9,0x209,0x249,0x289,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0, +0,0,0,0,0,0,0,0,8,8,6,6,6,6,8,6, +6,6,6,6,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0x7cb,0xa4b,0x17,0x17,0x17,0x1b,5,5,5,5,5,5,5,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,5,0x17,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, -0,0,0,0,5,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0, -0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x58b,0x5cb, -0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb, -0x1e4b,0,0,0,0x17,0x17,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,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,8, -6,6,6,6,6,6,6,0,6,6,6,6,6,6,8,6, -6,6,6,6,6,6,6,6,0,8,6,6,6,6,6,6, -6,8,6,6,8,6,6,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,5,6,0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,5,5,5,5, -5,5,5,0,5,5,0,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,0,0,0,6,0,6,6,0,6,5,5,5,5, -5,5,5,5,5,5,8,8,8,8,8,0,6,6,0,8, -8,6,8,6,5,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,5, -5,0,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,4,5,5, -0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, +5,5,5,0,0,6,8,6,5,5,5,5,5,5,5,5, +5,5,5,5,8,8,8,6,6,6,6,6,6,6,6,6, +8,6,6,0x17,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0,0,0,0,0, +0,0,0,0,0,0,0,5,8,5,8,6,0x17,0x17,0x17,0, +0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0,0,0,0,0,0,5,5,5,5,5,5,5,0, +0,5,0,0,5,5,5,5,5,5,5,5,0,5,5,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +8,8,8,8,8,8,0,8,8,0,0,6,6,8,6,5, +6,5,0x17,5,8,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,6,6,8,8,0x17,0x17,0,0,0, -0,0,0,0,6,8,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,6,0, -0,0,0,0,6,6,5,8,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,8,8,6,6, -6,6,6,0,0,0,8,8,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0, -0,0,0,0,0,0,0,0x17,0xcd0b,0xcc0b,0xcb0b,0xd00b,0xca0b,0xcf0b,0xcb4b,0xd04b, -0xc90b,0x37cb,0x37cb,0x364b,0x35cb,0xc94b,0x3fcb,0x350b,0x34cb,0x344b,0x344b,0x3ccb,0xcd0b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x19,0x19,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0,0,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x585,0x585,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,0x585,5,5, -5,5,5,5,5,5,0x3445,5,5,5,5,0x5c5,5,5,5,5, +5,8,8,8,6,6,6,6,0,0,6,6,8,8,8,8, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0x585,5,0x605,5,5,5,5,5,5,5,5,5,5, +5,5,5,6,6,6,6,6,6,8,5,6,6,6,6,0x17, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,6,0,0,0,0,0,0,0,0, +5,6,6,6,6,6,6,8,8,6,6,6,5,5,5,5, +5,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0x5c5,0,0,0,0,0,0,0x34ca,0x354a,0x34ca,0x34ca,0x344a,0x348a,0x388a,0xf4a, -0x11ca,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0,0x17,0x17,0x17,0x17,0x17,0,0,0, -0,0,0,0,0,0,0,0,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a, -0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a, -0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x5ca,0x60a,0x60a,0x64a,0x68a, -0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a,0x60a,0x64a,0x68a,0xc08a,0xc18a,0x58a,0x5ca,0x60a,0x60a, -0x64a,0x68a,0x60a,0x60a,0x64a,0x64a,0x64a,0x64a,0x6ca,0x70a,0x70a,0x70a,0x74a,0x74a,0x78a,0x78a, -0x78a,0x78a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x58a,0x5ca,0x60a,0x64a,0x64a,0x68a,0x68a,0x5ca,0x60a, -0x58a,0x5ca,0x348a,0x388a,0x454a,0x348a,0x388a,0x35ca,5,5,5,5,0,0,0,0, +0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,0,0, +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,8, +6,6,0x17,0x17,0x17,5,0x17,0x17,6,8,6,6,6,8,6,8, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0x17,0x17,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, -0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,6,5,5,5,5,5,5,6, -6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0, -0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6, -6,6,8,8,8,6,6,6,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,0,6,6,6,6,6,0x17,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,0x17, -0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,4,4,4,4,0x17,0x1b,0,0, +0,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0x17,5,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,0x17,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,0,0x7cb,0x1e4b,0x788b,0x790b,0x798b,0x7a0b,0x7a8b,0,5,5,5,5,5, +0x249,0x289,0,0,0,0,0,0,5,0x17,0x17,0x17,0x17,0x17,0,0, +0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb, +0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0,0,0,0x17,0x17,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,4,4,0x17,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,0,0,0,0,0,0,4,4,4,5,5,5,5,5, +5,5,5,8,6,6,6,6,6,6,6,0,6,6,6,6, +6,6,8,6,6,6,6,6,6,6,6,6,0,8,6,6, +6,6,6,6,6,8,6,6,8,6,6,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0,0,6,6,6,6,6,6,6,6,6,6, +6,6,6,6,6,6,5,6,0,0,0,0,0,0,0,0, +0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, +5,5,5,5,5,5,5,0,5,5,0,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,0x54b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b, -0x74b,0x78b,0x7cb,0x80b,0x84b,0x88b,0x8cb,0x90b,0x94b,0x98b,0x9cb,0xa0b,0x58b,0x5cb,0x60b,0x17, -0x17,0x17,0x17,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,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,0,0,2,2,2,2,2,5,5,5,5,5,5,5,5, -5,5,5,0,0,0,0,6,5,8,8,8,8,8,8,8, +5,6,6,6,6,6,6,0,0,0,6,0,6,6,0,6, +5,5,5,5,5,5,5,5,5,5,8,8,8,8,8,0, +6,6,0,8,8,6,8,6,5,0,0,0,0,0,0,0, +0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,0,5,5,0,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,4,5,5,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0,0,0,0,0,0,6,5,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,6,6,8,8,0x17, +0x17,0,0,0,0,0,0,0,6,8,6,0x17,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,6,0,0,0,0,0,6,6,5,8,5,5,5,5, +5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +8,8,6,6,6,6,6,0,0,0,8,8,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x19,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x17,0xcd0b,0xcc0b,0xcb0b,0xd00b, +0xca0b,0xcf0b,0xcb4b,0xd04b,0xc90b,0x37cb,0x37cb,0x364b,0x35cb,0xc94b,0x3fcb,0x350b,0x34cb,0x344b,0x344b,0x3ccb, +0xcd0b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x19,0x19,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0x585,0x585,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,0x585,5,5,5,5,5,5,5,5,0x3445,5,5,5,5,0x5c5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,0x585,5,0x605,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,0x5c5,0,0,0,0,0,0,0x34ca,0x354a,0x34ca,0x34ca, +0x344a,0x348a,0x388a,0xf4a,0x11ca,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x70a,0x17,0x17,0x17,0x17, +0x17,0x74a,0x78a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x60a,0x64a,0x68a,0x6ca, +0x70a,0x74a,0x78a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a, +0x74a,0x78a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x5ca,0x60a,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a, +0x58a,0x5ca,0x60a,0x60a,0x64a,0x68a,0xc08a,0xc18a,0x58a,0x5ca,0x60a,0x60a,0x64a,0x68a,0x60a,0x60a, +0x64a,0x64a,0x64a,0x64a,0x6ca,0x70a,0x70a,0x70a,0x74a,0x74a,0x78a,0x78a,0x78a,0x78a,0x5ca,0x60a, +0x64a,0x68a,0x6ca,0x58a,0x5ca,0x60a,0x64a,0x64a,0x68a,0x68a,0x5ca,0x60a,0x58a,0x5ca,0x348a,0x388a, +0x454a,0x348a,0x388a,0x35ca,5,5,5,5,0,0,0,0,0,0,0,0, +0,0,0,0,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a, +0x64a,0x68a,0x6ca,0x70a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x58a,0x5ca, +0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x58a, +0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x58a,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x74a,0x78a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a, +0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x58a,0x5ca,0x60a, +0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x35ca,0x35ca,0x34ca,0x34ca,0x344a, +0x58a,0x5ca,0x58a,0x5ca,0x60a,0x64a,0x68a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x348a,0x388a,0x58a,0x5ca, +0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x58a,0x5ca,0x58a,0x58a, +0x58a,0x58a,0x58a,0x58a,0x58a,0x58a,0x58a,0x58a,0x58a,0x58a,0x58a,0x5ca,0x60a,0x64a,0x58a,0x5ca, +0x60a,0x64a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a,0x64a,0x68a, +0x58a,0x5ca,0x60a,0x64a,0x68a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca, +0x60a,0x64a,0x68a,0x58a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x58a,0x58a, +0x5ca,0x60a,0x64a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a, +0x78a,0x58a,0x58a,0x58a,0x58a,0x58a,0x58a,0x5ca,0x60a,0x64a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x58a, +0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca, +0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a,0x64a,0x58a,0x58a,0x58a,0x58a,0x58a,0x58a,0x58a,0x5ca,0x60a, +0x64a,0x58a,0x5ca,0x60a,0x64a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca, +0x70a,0x74a,0x78a,0x58a,0x5ca,0x58a,0x5ca,0x58a,0x58a,0x58a,0x58a,0x5ca,0x60a,0x58a,0x5ca,0x60a, +0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca, +0x70a,0x74a,0x78a,0x58a,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,0x17,0x17,0,0,0,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,6,5,5,5,5,5,5,6,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0, +0,0,0,0,6,6,6,6,6,6,6,6,6,6,8,8, +8,6,6,6,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,0,0,6,6,6,6,6,0x17,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,6,6,6,6,6,6,6,0x17,0x17,0x17,0x17,0x17, +0x1b,0x1b,0x1b,0x1b,4,4,4,4,0x17,0x1b,0,0,0,0,0,0, +0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0x7cb, +0x1e4b,0x788b,0x790b,0x798b,0x7a0b,0x7a8b,0,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0, +0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4, +4,0x17,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, +0,0,0,0,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,0x54b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0x80b, +0x84b,0x88b,0x8cb,0x90b,0x94b,0x98b,0x9cb,0xa0b,0x58b,0x5cb,0x60b,0x17,0x17,0x17,0x17,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,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,0,0,2, +2,2,2,2,5,5,5,5,5,5,5,5,5,5,5,0, +0,0,0,6,5,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, -8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0, -0,0,0,6,6,6,6,4,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,0x17,4,6,0,0,0,0,0,0,0, -0,0,0,0,8,8,4,4,0x58a,0x3c4a,0x5ca,0,0,0,0,0, +8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,6, +6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,0x17,4,6,0,0,0,0,0,0,0,0,0,0,0, +8,8,4,4,0x58a,0x3c4a,0x5ca,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, +0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -4,4,4,4,0,4,4,4,4,4,4,4,0,4,4,0, -5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,0,0,5,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0,0,0,0,0,5,5,5,5,5,5,5,5, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4, +0,4,4,4,4,4,4,4,0,4,4,0,5,5,5,5, +5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +5,5,5,0,0,5,0,0,0,0,0,0,0,0,0,0, 5,5,5,5,5,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,0,0,0x1b,6,6,0x17,0x10,0x10,0x10,0x10, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,0,0,0x1b,6,6,0x17,0x10,0x10,0x10,0x10,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0,0,0,0, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0, +0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0,0,0,0,0,0,0, +0,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,0,0,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0, -0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6, +6,6,0,0,6,6,6,6,6,6,6,6,6,6,6,6, +6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,8,8,6, +6,6,0x1b,0x1b,0x1b,8,8,8,8,8,8,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,6,6,6,6,6,6,6,6,0x1b,0x1b,6,6,6, +6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,6,6,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,8,8,6,6,6,0x1b,0x1b,0x1b,8,8,8,8,8,8,0x10, -0x10,0x10,0x10,0x10,0x10,0x10,0x10,6,6,6,6,6,6,6,6,0x1b, -0x1b,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6, -6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,6,0x1b,0,0,0,0,0,0, +0x1b,0x1b,6,6,6,0x1b,0,0,0,0,0,0,0,0,0,0, +8,8,8,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,0x1b,0x1b,8, +8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x54b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0x80b, -0x84b,0x88b,0x8cb,0x90b,0x94b,0x98b,0x9cb,0xa0b,0,0,0,0,0,0,0,0, -0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0, -0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb, -0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x58b,0x5cb,0x60b,0x64b,0x68b,0x58b,0x68b,0,0,0, -0,0,0,0,0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189, -0x1c9,0x209,0x249,0x289,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,2,2, +0x54b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0x80b,0x84b,0x88b,0x8cb,0x90b, +0x94b,0x98b,0x9cb,0xa0b,0,0,0,0,0,0,0,0,0,0,0,0, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0, +0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb, +0x194b,0x1bcb,0x58b,0x5cb,0x60b,0x64b,0x68b,0x58b,0x68b,0,0,0,0,0,0,0, +0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, +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,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,1,1,1,1,1,1, -1,1,2,2,2,2,2,2,2,0,2,2,2,2,2,2, -2,2,2,2,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,2,2, +2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2, +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,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,0,1,1,0,0,1,0,0,1,1,0, +0,1,1,1,1,0,1,1,1,1,1,1,1,1,2,2, +2,2,0,2,0,2,2,2,2,2,2,2,0,2,2,2, +2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,2,2,2,2,1,1,0,1, +1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1, +1,1,1,1,1,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,2,2,1,0,1,1,0,0,1,0, -0,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1, -1,1,2,2,2,2,0,2,0,2,2,2,2,2,2,2, -0,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2, -1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1, -1,0,1,1,1,1,1,1,1,0,2,2,2,2,2,2, +1,1,0,1,1,1,1,0,1,1,1,1,1,0,1,0, +0,0,1,1,1,1,1,1,1,0,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,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,1,1,0,1,1,1,1,0,1,1,1,1, -1,0,1,0,0,0,1,1,1,1,1,1,1,0,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1, +2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,0, 1,1,1,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,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2, -2,2,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,0x18,2,2, +1,1,1,1,1,1,1,1,1,0x18,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,0x18,2,2,2,2,2,2,1,1, +2,2,2,0x18,2,2,2,2,2,2,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,0x18,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,0x18,2,2, -2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,2,2,2,0x18,2,2,2,2,2,2,1,2, -0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,6, -6,6,6,6,6,6,6,6,6,6,6,6,6,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -6,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,0, +1,1,1,0x18,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,0x18,2,2,2,2,2,2, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +2,2,2,0x18,2,2,2,2,2,2,1,2,0,0,0x49,0x89, +0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, -6,0,0,6,6,6,6,6,2,2,2,2,2,2,2,2, +6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,6,6,6,6,6, +6,6,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x17, +0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,6,6,6,6,6,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0,0,0,2,2,2,2,2,2,2,2, 2,2,5,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,0,0,0,0,0,0,2,2,2, -2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,6,6,0,6,6,0,6,6, +2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2, +1,2,1,2,2,1,2,2,2,1,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,1,2,1,2,1,2,1,2, +2,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,0, +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +6,0,0,6,6,6,6,6,6,6,0,6,6,0,6,6, 6,6,6,0,0,0,0,0,4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0, @@ -1448,2809 +1489,2854 @@ static const uint16_t propsTrie_index[24108]={ 5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x2cb,0x2cb,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b, -0x48b,0x4cb,0x50b,0x54b,0x54b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0,0,0,0,0,0,0,0x1b,0x1b,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x2cb,0x2cb,0x30b,0x34b, +0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x54b,0x54b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0x1b,0x1b,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0,0,0,0,0x1b,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0, -0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0, -0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0, -0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0x1b,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x18,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0,0,0, -0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, -0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0, -0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,0x1b,0,0,0,0,0,5,0x705,5,5,5,5,5,5, +0x1b,0x1b,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0x1b,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x1b,0,0,0,0,0, +5,0x705,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,0x645,5,5,5,5,5,5,5, +0x645,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,0x645,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0x645,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x685,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0x685,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,0xcc5, +5,5,5,5,5,5,5,5,0xf45,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0xf45,5,5,5,5,5,5,5, +5,5,5,5,5,5,0x6c5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0x605,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,0xcc5,5,5,5,5,5,5,5,5, -0xf45,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0xf45,5,5,5,5,5,5,5,5,5,5,5,5,5,0x6c5,5, +5,5,5,5,5,0x605,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,0x605,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,0x605,5,5, +0x605,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,0x605, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x645,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,0x605,5,5,5,5,5,5,5, +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0x605,5,5,5,5,5,5,5,5, -5,5,5,5,5,0x645,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,0x785,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x785,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,0x8005,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,0x11c5,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, -0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0,0x10,0,0,0,0,0,0, +0x10,0x10,0x10,0x10,0,0x10,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, +0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6, +6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, -0x11,0x11,0x11,0x11,0x11,0x11,0,0,0,0,0,0 +0x11,0x11,0,0,0,0,0,0 }; static const UTrie2 propsTrie={ propsTrie_index, - propsTrie_index+4628, + propsTrie_index+4760, nullptr, - 4628, - 19480, + 4760, + 19984, 0xa40, - 0x1294, + 0x1318, 0x0, 0x0, 0x110000, - 0x5e28, + 0x60a4, nullptr, 0, false, false, 0, nullptr }; -static const uint16_t propsVectorsTrie_index[43132]={ -0x5c9,0x5d1,0x5d9,0x5e1,0x5f9,0x601,0x609,0x611,0x619,0x621,0x629,0x631,0x639,0x641,0x649,0x651, -0x659,0x661,0x669,0x671,0x679,0x681,0x689,0x691,0x699,0x6a1,0x6a9,0x6b1,0x6b9,0x6c1,0x6c9,0x6d1, -0x6d9,0x6e1,0x6e8,0x6f0,0x6f8,0x700,0x708,0x710,0x718,0x720,0x725,0x72d,0x734,0x73c,0x744,0x74c, -0x754,0x75c,0x764,0x76c,0x773,0x77b,0x783,0x78b,0x793,0x79b,0x7a3,0x7ab,0x7b3,0x7bb,0x7c3,0x7cb, -0x2581,0x7d3,0x7db,0x7e3,0x7e9,0x26cb,0x28bc,0x270f,0x1642,0x1648,0x1650,0x163a,0x7f1,0x7f7,0x7ff,0x807, -0x80f,0x815,0x81d,0x825,0x82d,0x833,0x83b,0x843,0x84b,0x851,0x859,0x861,0x869,0x871,0x879,0x880, -0x888,0x88e,0x896,0x89e,0x8a6,0x8ac,0x8b4,0x8bc,0x8c4,0x16be,0x8cc,0x8d4,0x8dc,0x8e4,0x8ec,0x8f4, -0x8fc,0x900,0x908,0x5e9,0x910,0x918,0x920,0x5e9,0x1fe6,0x1fee,0x928,0x930,0x938,0x940,0x948,0x5e9, -0x2194,0x2065,0x205d,0x24a2,0x249a,0x1660,0x950,0x1658,0x1f74,0x1f74,0x1f76,0x167c,0x167d,0x1670,0x1672,0x1674, -0x2034,0x2036,0x958,0x2036,0x960,0x965,0x96d,0x202c,0x973,0x2036,0x979,0x981,0x989,0x2024,0x2024,0x991, -0x207d,0x207e,0x207e,0x207e,0x207e,0x207e,0x207e,0x207e,0x207e,0x207e,0x207e,0x207e,0x207e,0x207e,0x207e,0x207e, -0x207e,0x207e,0x207e,0x2075,0x999,0x206d,0x206d,0x9a1,0x9a9,0x9b1,0x9b9,0x9c1,0x218c,0x203e,0x9c9,0x9d1, -0x9d9,0x2046,0x204e,0x9e1,0x2055,0x9e9,0x2529,0x9ed,0x9f5,0x9fd,0xa05,0xa0a,0x23d0,0xa12,0xa19,0x233c, -0xa21,0x25e0,0xa29,0xa31,0xa39,0xa41,0xa49,0xa51,0x2428,0x242d,0xa59,0x2420,0x24f9,0x24f1,0x25fb,0xa61, -0x24c1,0xa69,0xa71,0x24de,0xa79,0xa7d,0xa85,0xa8d,0x2344,0x2324,0x2334,0x232c,0x23ac,0x23a4,0x23f8,0x244a, -0x1685,0x168d,0x169d,0x1695,0x16a4,0x16b4,0x16b4,0x16b6,0xa95,0x1668,0xa99,0xaa1,0x1668,0xaa9,0xab1,0xab9, -0x1475,0x146d,0x14ad,0xac1,0xac9,0x1495,0x13dd,0xad1,0x1485,0x148d,0x14a5,0x16ac,0xad9,0x14bd,0x14c4,0x14cc, -0x1553,0x155b,0x1563,0x156b,0x1573,0x157a,0x1582,0x158a,0x14d4,0x14dc,0x14df,0x14e1,0x201c,0x22bb,0x22c1,0x2408, -0x14df,0x13f6,0x13fe,0x16ce,0x16d3,0x16d6,0x16dc,0x149d,0x16e4,0x16e4,0x14e9,0x14b5,0x14ed,0x14f5,0x14fd,0x1505, -0x150d,0x1515,0x151d,0x1525,0x22c9,0x2314,0x2474,0x25cd,0x152d,0x1533,0x153b,0x1543,0x147d,0x154b,0x22d1,0x22d8, -0x2086,0x2087,0x2087,0x2087,0x2087,0x2087,0x2087,0x2087,0x22dc,0x22dc,0x22dc,0x22dc,0x22e4,0x22dc,0x22eb,0x22f2, -0x22fa,0x22dc,0x22dc,0x22fe,0x22dc,0x22dc,0x2304,0x22dc,0x231c,0x2410,0x2464,0x1406,0x2745,0x274b,0x2753,0x27fb, -0x23c0,0x23b4,0x23b8,0x2418,0x237c,0x237c,0x237c,0xae1,0x2384,0xae9,0x23d8,0xaf0,0xaf8,0xb00,0xb00,0x2509, -0x2374,0x246c,0x140e,0x1416,0xb08,0x2097,0x2097,0xb10,0x209f,0x209f,0x209f,0x209f,0x209f,0x209f,0xb18,0xb1e, -0x1711,0x16c6,0xb26,0x1f8d,0xb2e,0x1fab,0x1fb3,0x1fbb,0xb36,0xb3b,0x1f7e,0x1f85,0xb40,0x208f,0x23f0,0xb48, -0xb50,0x1fc3,0x1fca,0x1719,0x1fda,0x1fde,0x1f95,0x1f99,0x1fa1,0x1fa1,0x1fa3,0x1729,0x1731,0x1731,0x1732,0x1fd2, -0x20a7,0x20a7,0x20ae,0x20ab,0x20a7,0x20a7,0x20a7,0x20b5,0x20a7,0x20a7,0x20a7,0x20aa,0x20b7,0x20bf,0x20c7,0x20cb, -0x20d3,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7, -0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20b0,0x20a7,0x20a7,0x20db,0x20a7,0x20a7,0x20e0,0x20e8, -0x20b0,0x20a7,0x20f0,0x20f8,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20fd,0x20c7,0x20a7,0x20a7,0x2105,0x20a7,0x20a7, -0x20a7,0x20a7,0x20a7,0x20c7,0x20a7,0x20a7,0x20a7,0x20b6,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20e5, -0x20a7,0x20a7,0x20a7,0x20b1,0x20a7,0x20a7,0x20b2,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7, -0x20a7,0x20a7,0x2108,0x210f,0x20a7,0x20a9,0x20a8,0x20a7,0x20a7,0x20aa,0x20a8,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7, -0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20aa,0x20a7,0x20a7,0x20a7,0x2114,0x2119,0x20a7, -0x20a7,0x20a7,0x2105,0x20a7,0x20a7,0x20a7,0x2108,0x2121,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7, -0x2122,0x20a7,0x20b3,0x212a,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x2132,0x20a7,0x2135,0x2127,0x20a7,0x20a7,0x20b1, -0x20a7,0x20a7,0x20a7,0x20a7,0x213d,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20ae,0x20b8,0x2145,0x214d,0x20a7,0x20a7, -0x2153,0x20a7,0x20a7,0x20a7,0x20a7,0x20b0,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7,0x20a7, -0x20a7,0x20a7,0x20a7,0x212d,0x215b,0x2163,0x20a7,0x20a7,0x2167,0x20a7,0x20a7,0x20a7,0x20a7,0x216e,0x235c,0x235c, -0x174f,0x1755,0x1f6c,0x175b,0x1762,0x176a,0x176e,0x1775,0x177d,0x1783,0x178b,0x178f,0x1794,0x179c,0x17a4,0x17ac, -0x1759,0x17b4,0x17bc,0x17c3,0x17cb,0x17d3,0x17db,0x17e3,0x17e9,0x17e6,0x17f1,0x17f9,0x1801,0x1809,0x1811,0x1819, -0x1f6c,0x1f6c,0x1772,0x1820,0x1825,0x1f6c,0x182c,0x1834,0x183c,0x1844,0x184c,0x1854,0x17c2,0x185c,0x1863,0x186b, -0x1873,0x1879,0x175a,0x1755,0x179a,0x178e,0x1f6c,0x1762,0x187c,0x1f6c,0x1769,0x1873,0x1f6c,0x1f6c,0x1f6c,0x1884, -0x188b,0x1893,0x1899,0x18a1,0x18a9,0x18b1,0x18b8,0x18bf,0x18c7,0x18cf,0x18d7,0x18df,0x18e7,0x18ed,0x1860,0x1f6c, -0x186d,0x1f6c,0x18f1,0x18f9,0x178e,0x18ff,0x1907,0x190f,0x1917,0x191f,0x1925,0x1f6c,0x1f6c,0x192c,0x1f6c,0x1769, -0x1f6c,0x1933,0x17c5,0x1938,0x193f,0x1768,0x1772,0x1839,0x1854,0x178d,0x1946,0x194e,0x18eb,0x1956,0x195e,0x1f6c, -0x1966,0x196e,0x18b1,0x1f6c,0x1975,0x17c5,0x1978,0x178e,0x1f6c,0x1980,0x1987,0x17c2,0x198c,0x1994,0x199b,0x1762, -0x174f,0x1f6c,0x19a3,0x1f6c,0x174f,0x18b1,0x17c2,0x19a9,0x1799,0x19b0,0x1f6c,0x1f6c,0x18fb,0x19b8,0x19c0,0x19c8, -0x1f6c,0x19d0,0x1762,0x19d8,0x1927,0x1975,0x19de,0x19e6,0x19ee,0x19f6,0x1f6c,0x19fe,0x1a06,0x1925,0x184e,0x1a0e, -0x1975,0x1a12,0x192c,0x1f6c,0x19d5,0x1f6c,0x1a19,0x179a,0x1765,0x1a21,0x17e9,0x1f6c,0x1a27,0x1f6c,0x178f,0x1f6c, -0x1f6c,0x1a2c,0x1a34,0x1a19,0x179b,0x1a3c,0x1a42,0x1a48,0x1a50,0x18ed,0x1a58,0x187a,0x1a60,0x179e,0x1a67,0x1a6f, -0x192c,0x1a77,0x1a7e,0x1a86,0x1a8a,0x17b0,0x1a92,0x1773,0x1a9a,0x1aa1,0x1f6c,0x1769,0x1aa7,0x1aad,0x1926,0x178d, -0x1ab5,0x1abc,0x1ac1,0x18b1,0x1a12,0x1ac9,0x1ad1,0x1ad9,0x1755,0x1a19,0x1754,0x1f6c,0x1adb,0x1879,0x1ae3,0x1f6c, -0x176a,0x1aea,0x1af0,0x1af8,0x1aff,0x1b07,0x1b0f,0x1755,0x1764,0x1a37,0x1b15,0x1b1d,0x1f6c,0x176b,0x1f6c,0x1b25, -0x1af0,0x1b2c,0x1975,0x1794,0x1f6c,0x17c2,0x176b,0x1758,0x1b34,0x17c1,0x1f6c,0x178f,0x1b3c,0x1b42,0x1f6c,0x1b48, -0x1b50,0x179a,0x176e,0x1b57,0x1b5f,0x1f6c,0x17e9,0x19d0,0x19ce,0x1f6c,0x1b67,0x178d,0x1b6a,0x192c,0x1b72,0x1978, -0x1a82,0x1f6c,0x1b79,0x1b7d,0x1b85,0x1b8c,0x178e,0x1a19,0x18ed,0x1b93,0x192c,0x1b99,0x1823,0x1a5d,0x19cc,0x17eb, -0x1b9f,0x1ba7,0x1bae,0x1f6c,0x1f6c,0x1bb4,0x1f6c,0x1f6c,0x1bbb,0x18ed,0x1772,0x1f6c,0x17c3,0x1f6c,0x1a18,0x1bc0, -0x176b,0x1bc7,0x1bcf,0x17e9,0x1bd4,0x1f6c,0x1bdc,0x1768,0x1f6c,0x17c2,0x1be4,0x1bec,0x1975,0x1ab8,0x17c3,0x1799, -0x1f6c,0x176e,0x1bf3,0x1772,0x1754,0x1bfb,0x1c03,0x1768,0x1c0b,0x1c13,0x1879,0x17c1,0x1762,0x1c1b,0x1c23,0x1c2b, -0x1f6c,0x19bb,0x1c33,0x1762,0x18ed,0x1f6c,0x1a5e,0x1c37,0x1c3d,0x1c45,0x178d,0x1c4b,0x1c52,0x1c5a,0x1c62,0x1f6c, -0x1c6a,0x1c6f,0x1f6c,0x1c76,0x1c7e,0x1c85,0x1c8d,0x1c93,0x186b,0x1c9b,0x1ca3,0x1f6c,0x1f6c,0x1cab,0x1f6c,0x18b1, -0x17e9,0x1c81,0x1cb0,0x1762,0x1cb8,0x176e,0x1cbf,0x1cc7,0x1f6c,0x1ccf,0x1cd5,0x1cdc,0x1ce4,0x178a,0x1ceb,0x1ced, -0x176b,0x1f6c,0x17e9,0x17c1,0x187a,0x1f6c,0x1f6c,0x1f6c,0x1f6c,0x1a2c,0x1cf5,0x1f6c,0x1cfc,0x1758,0x1d03,0x17c1, -0x179a,0x1d0b,0x17c2,0x179b,0x1d10,0x1d17,0x1adb,0x1f6c,0x1d1f,0x17ae,0x1f6c,0x1f6c,0x1d26,0x1f6c,0x1768,0x1d2d, -0x1772,0x17c1,0x1a18,0x1975,0x176e,0x174f,0x1f6c,0x1b34,0x17be,0x1759,0x178e,0x1f6c,0x1f6c,0x1a19,0x1f6c,0x19e4, -0x1d32,0x1f6c,0x176b,0x1f6c,0x1d39,0x192c,0x19d0,0x1754,0x1d3d,0x1c80,0x1d42,0x1adb,0x1772,0x1d47,0x176e,0x1d4e, -0x1d56,0x192c,0x192c,0x178e,0x1824,0x1b33,0x178e,0x1d5e,0x187a,0x19a8,0x1975,0x178f,0x1c24,0x1f6c,0x18b1,0x1759, -0x1aee,0x1d62,0x1d69,0x18b1,0x1f6c,0x1f6c,0x1f6c,0x1d71,0x1983,0x17c1,0x1f6c,0x1d78,0x1d80,0x1d87,0x1f6c,0x1d8f, -0x1d97,0x1d9f,0x1768,0x1da7,0x176f,0x1bc1,0x1759,0x176e,0x1f6c,0x1daf,0x1f6c,0x1db7,0x1dbf,0x1f6c,0x1f6c,0x1f6c, -0x1f6c,0x176b,0x1dc7,0x188e,0x1dcf,0x179b,0x1dd3,0x1ab8,0x1ddb,0x1f6c,0x1f6c,0x17c3,0x1f6c,0x179b,0x17c2,0x1975, -0x17d9,0x174f,0x1d67,0x1de0,0x17e9,0x1de8,0x1bde,0x1759,0x1773,0x1d62,0x1a18,0x1f6c,0x187a,0x1def,0x1df7,0x1769, -0x1f6c,0x1dfd,0x1b33,0x1f6c,0x1f6c,0x1768,0x1b43,0x1762,0x179a,0x1e03,0x178d,0x17e9,0x1e0b,0x1e12,0x17c1,0x1e1a, -0x1e1e,0x1879,0x19d0,0x1e26,0x1e2e,0x187a,0x1e36,0x1879,0x17c3,0x17af,0x1f6c,0x1e3e,0x1e46,0x1e4d,0x1f6c,0x1e55, -0x1e5d,0x17c1,0x1aef,0x1e65,0x1f6c,0x1f6c,0x1f6c,0x1f6c,0x1f6c,0x1f6c,0x1f6c,0x1e6c,0x19a6,0x1e74,0x1e7c,0x1f6c, -0x1f6c,0x1e84,0x1c7f,0x1e8c,0x1e94,0x1e9c,0x1f6c,0x1ea3,0x1eab,0x1eb2,0x1eba,0x1d39,0x193a,0x1ec0,0x1ec8,0x17c3, -0x1adb,0x1ecf,0x1ed6,0x1edd,0x1f6c,0x192c,0x179a,0x1ee4,0x178d,0x17e9,0x1eeb,0x1f6c,0x1f6c,0x1adb,0x1f6c,0x1ef3, -0x1ef9,0x17e9,0x1a9c,0x19d0,0x1f6c,0x1f00,0x1dee,0x1f08,0x1f10,0x18e0,0x19cb,0x181d,0x1e0e,0x1f6c,0x1879,0x1762, -0x1f18,0x1f6c,0x1f20,0x1f28,0x1f6c,0x1f6c,0x1f6c,0x1f6c,0x1f2f,0x1f36,0x1f6c,0x1754,0x178e,0x1750,0x17c2,0x1af0, -0x1f3e,0x1f6c,0x1f6c,0x17e9,0x1f46,0x1f4d,0x1f6c,0x17c7,0x1f55,0x179b,0x1f5c,0x1754,0x1f6c,0x1f64,0x2501,0x28e4, -0x217e,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184, -0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184,0x2184, -0x2184,0x2184,0x2184,0x2184,0xb58,0x2176,0xb60,0x259d,0x24ce,0x24ce,0x24ce,0x24ce,0x24ce,0x24ce,0x24ce,0x24ce, -0x24c9,0xb68,0x2484,0x247c,0x2486,0x2595,0x2595,0xb70,0x236c,0x2400,0x248e,0x2492,0x245c,0x25f3,0xb78,0xb80, -0x23c8,0xb88,0x2435,0xb90,0x24e6,0x24e9,0xb98,0x2519,0x24b2,0x24b9,0xba0,0xba8,0x254d,0x2551,0xbb0,0xbb8, -0x24aa,0xbc0,0xbc8,0x2521,0x2589,0x258d,0xbd0,0xbd8,0xbe0,0xbe8,0x273d,0xbf0,0x2803,0x2803,0x2561,0xbf8, -0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f, -0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011, -0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013, -0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e, -0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010, -0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012, -0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014, -0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f, -0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011, -0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013, -0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e, -0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010, -0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012, -0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014, -0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f, -0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011, -0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013, -0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e, -0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010, -0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012, -0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014, -0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0x2014,0x200e,0x200f,0x2010,0x2011,0x2012,0x2013,0xc00,0xc07,0xc0a, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6, -0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6, -0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, -0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, -0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, -0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, -0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, -0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, -0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, -0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, -0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, -0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, -0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, -0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, -0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a, -0x173f,0x1747,0x230c,0x141e,0x23e8,0x23e8,0x1422,0x1429,0xc12,0xc1a,0xc22,0x15aa,0x15b1,0x15b9,0x15c1,0x15c9, -0x162a,0x162a,0x1592,0x159a,0x15d1,0x1621,0x1622,0x1632,0x15d9,0x15de,0x15e6,0x15ee,0x15f6,0x15fe,0x1606,0x15a2, -0xc2a,0x1721,0xc32,0xc3a,0x160e,0x1614,0x1619,0xc42,0xc4a,0x1701,0x1709,0x16f4,0x16f9,0xc52,0xc5a,0xc62, -0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6, -0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6, -0x17a4,0x17a4,0x17e4,0x1824,0x1864,0x18a4,0x18e4,0x1924,0x1964,0x19a4,0x19e4,0x1a24,0x1a64,0x1aa4,0x1ae4,0x1b24, -0x1b64,0x1ba0,0x1be0,0x1c20,0x1c60,0x1c94,0x1cd0,0x1d10,0x1d50,0x1d90,0x1dcc,0x1e0c,0x1e4c,0x1e8c,0x1ecc,0x1f0c, -0xa80,0xac0,0xb00,0xb40,0xb80,0xbab,0xbeb,0x16a1,0xc0e,0xa40,0xa40,0xa40,0xc46,0xc86,0x157d,0x157d, -0x157e,0xcc6,0xa40,0xa40,0xa40,0xcf6,0xd36,0xd56,0xa40,0xd7c,0xdbc,0xdfc,0xe3c,0xe7c,0xf3c,0xebc, -0x1224,0x1260,0x12a0,0x12af,0x12e9,0x1310,0x12af,0x1346,0x136c,0x1393,0x13ca,0x12af,0x13f8,0x1437,0x12af,0x1466, -0x149c,0x14b6,0x12af,0x13de,0xfcc,0x14f6,0x14fd,0x100c,0x153d,0x1017,0x15be,0x15be,0x15be,0x104d,0x1080,0x10c0, -0x15fe,0x15fe,0x1100,0x163e,0x1661,0x16e1,0x1140,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080, -0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1164, +static const uint16_t propsVectorsTrie_index[43864]={ +0x5e7,0x5ef,0x5f7,0x5ff,0x617,0x61f,0x627,0x62f,0x637,0x63f,0x647,0x64f,0x657,0x65f,0x667,0x66f, +0x677,0x67f,0x687,0x68f,0x697,0x69f,0x6a7,0x6af,0x6b7,0x6bf,0x6c7,0x6cf,0x6d7,0x6df,0x6e7,0x6ef, +0x6f7,0x6ff,0x706,0x70e,0x716,0x71e,0x726,0x72e,0x736,0x73e,0x743,0x74b,0x752,0x75a,0x762,0x76a, +0x772,0x77a,0x782,0x78a,0x791,0x799,0x7a1,0x7a9,0x7b1,0x7b9,0x7c1,0x7c9,0x7d1,0x7d9,0x7e1,0x7e9, +0x25b4,0x7f1,0x7f9,0x801,0x807,0x26fe,0x28f7,0x2742,0x1664,0x166a,0x1672,0x165c,0x80f,0x815,0x81d,0x825, +0x82d,0x833,0x83b,0x843,0x84b,0x851,0x859,0x861,0x869,0x86f,0x877,0x87f,0x887,0x88f,0x897,0x89e, +0x8a6,0x8ac,0x8b4,0x8bc,0x8c4,0x8ca,0x8d2,0x8da,0x8e2,0x16e0,0x8ea,0x8f2,0x8fa,0x902,0x90a,0x912, +0x91a,0x91e,0x926,0x607,0x92e,0x936,0x93e,0x607,0x2008,0x2010,0x946,0x94e,0x956,0x95e,0x966,0x607, +0x21b6,0x2087,0x207f,0x24d5,0x24cd,0x1682,0x96e,0x167a,0x1f96,0x1f96,0x1f98,0x169e,0x169f,0x1692,0x1694,0x1696, +0x2056,0x2058,0x976,0x2058,0x97e,0x983,0x98b,0x204e,0x991,0x2058,0x997,0x99f,0x9a7,0x2046,0x2046,0x9af, +0x209f,0x20a0,0x20a0,0x20a0,0x20a0,0x20a0,0x20a0,0x20a0,0x20a0,0x20a0,0x20a0,0x20a0,0x20a0,0x20a0,0x20a0,0x20a0, +0x20a0,0x20a0,0x20a0,0x2097,0x9b7,0x208f,0x208f,0x9bf,0x9c7,0x9cf,0x9d7,0x9df,0x21ae,0x2060,0x9e7,0x9ef, +0x9f7,0x2068,0x2070,0x9ff,0x2077,0xa07,0x255c,0xa0b,0xa13,0xa1b,0xa23,0xa28,0x23fb,0xa30,0xa37,0x2367, +0xa3f,0x2613,0xa47,0xa4f,0xa57,0xa5f,0x29e6,0xa67,0x2453,0x2458,0xa6f,0x244b,0x252c,0x2524,0x262e,0xa77, +0x24f4,0xa7f,0xa87,0x2511,0xa8f,0xa93,0xa9b,0xaa3,0x236f,0x234f,0x235f,0x2357,0x23d7,0x23cf,0x2423,0x247d, +0x16a7,0x16af,0x16bf,0x16b7,0x16c6,0x16d6,0x16d6,0x16d8,0xaab,0x168a,0xaaf,0xab7,0x168a,0xabf,0xac7,0xacf, +0x148f,0x1487,0x14cf,0xad7,0x14c7,0x14af,0x13f7,0xadf,0x149f,0x14a7,0x14bf,0x16ce,0xae7,0x14df,0x14e6,0x14ee, +0x1575,0x157d,0x1585,0x158d,0x1595,0x159c,0x15a4,0x15ac,0x14f6,0x14fe,0x1501,0x1503,0x203e,0x22e6,0x22ec,0x2433, +0x1501,0x1410,0x1418,0x16f0,0x16f5,0x16f8,0x16fe,0x14b7,0x1706,0x1706,0x150b,0x14d7,0x150f,0x1517,0x151f,0x1527, +0x152f,0x1537,0x153f,0x1547,0x22f4,0x233f,0x24a7,0x2600,0x154f,0x1555,0x155d,0x1565,0x1497,0x156d,0x22fc,0x2303, +0x20a8,0x20a9,0x20a9,0x20a9,0x20a9,0x20a9,0x20a9,0x20a9,0x2307,0x2307,0x2307,0x2307,0x230f,0x2307,0x2316,0x231d, +0x2325,0x2307,0x2307,0x2329,0x2307,0x2307,0x232f,0x2307,0x2347,0x243b,0x2497,0x1420,0x2778,0x277e,0x2786,0x2836, +0x23eb,0x23df,0x23e3,0x2443,0x23a7,0x23a7,0x23a7,0xaef,0x23af,0xaf7,0x2403,0xafe,0xb06,0xb0e,0xb0e,0x253c, +0x239f,0x249f,0x1428,0x1430,0xb16,0x20b9,0x20b9,0xb1e,0x20c1,0x20c1,0x20c1,0x20c1,0x20c1,0x20c1,0xb26,0xb2c, +0x1733,0x16e8,0xb34,0x1faf,0xb3c,0x1fcd,0x1fd5,0x1fdd,0xb44,0xb49,0x1fa0,0x1fa7,0xb4e,0x20b1,0x241b,0xb56, +0xb5e,0x1fe5,0x1fec,0x173b,0x1ffc,0x2000,0x1fb7,0x1fbb,0x1fc3,0x1fc3,0x1fc5,0x174b,0x1753,0x1753,0x1754,0x1ff4, +0x20c9,0x20c9,0x20d0,0x20cd,0x20c9,0x20c9,0x20c9,0x20d7,0x20c9,0x20c9,0x20c9,0x20cc,0x20d9,0x20e1,0x20e9,0x20ed, +0x20f5,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9, +0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20d2,0x20c9,0x20c9,0x20fd,0x20c9,0x20c9,0x2102,0x210a, +0x20d2,0x20c9,0x2112,0x211a,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x211f,0x20e9,0x20c9,0x20c9,0x2127,0x20c9,0x20c9, +0x20c9,0x20c9,0x20c9,0x20e9,0x20c9,0x20c9,0x20c9,0x20d8,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x2107, +0x20c9,0x20c9,0x20c9,0x20d3,0x20c9,0x20c9,0x20d4,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9, +0x20c9,0x20c9,0x212a,0x2131,0x20c9,0x20cb,0x20ca,0x20c9,0x20c9,0x20cc,0x20ca,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9, +0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20cc,0x20c9,0x20c9,0x20c9,0x2136,0x213b,0x20c9, +0x20c9,0x20c9,0x2127,0x20c9,0x20c9,0x20c9,0x212a,0x2143,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9, +0x2144,0x20c9,0x20d5,0x214c,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x2154,0x20c9,0x2157,0x2149,0x20c9,0x20c9,0x20d3, +0x20c9,0x20c9,0x20c9,0x20c9,0x215f,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20d0,0x20da,0x2167,0x216f,0x20c9,0x20c9, +0x2175,0x20c9,0x20c9,0x20c9,0x20c9,0x20d2,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9,0x20c9, +0x20c9,0x20c9,0x20c9,0x214f,0x217d,0x2185,0x20c9,0x20c9,0x2189,0x20c9,0x20c9,0x20c9,0x20c9,0x2190,0x2387,0x2387, +0x1771,0x1777,0x1f8e,0x177d,0x1784,0x178c,0x1790,0x1797,0x179f,0x17a5,0x17ad,0x17b1,0x17b6,0x17be,0x17c6,0x17ce, +0x177b,0x17d6,0x17de,0x17e5,0x17ed,0x17f5,0x17fd,0x1805,0x180b,0x1808,0x1813,0x181b,0x1823,0x182b,0x1833,0x183b, +0x1f8e,0x1f8e,0x1794,0x1842,0x1847,0x1f8e,0x184e,0x1856,0x185e,0x1866,0x186e,0x1876,0x17e4,0x187e,0x1885,0x188d, +0x1895,0x189b,0x177c,0x1777,0x17bc,0x17b0,0x1f8e,0x1784,0x189e,0x1f8e,0x178b,0x1895,0x1f8e,0x1f8e,0x1f8e,0x18a6, +0x18ad,0x18b5,0x18bb,0x18c3,0x18cb,0x18d3,0x18da,0x18e1,0x18e9,0x18f1,0x18f9,0x1901,0x1909,0x190f,0x1882,0x1f8e, +0x188f,0x1f8e,0x1913,0x191b,0x17b0,0x1921,0x1929,0x1931,0x1939,0x1941,0x1947,0x1f8e,0x1f8e,0x194e,0x1f8e,0x178b, +0x1f8e,0x1955,0x17e7,0x195a,0x1961,0x178a,0x1794,0x185b,0x1876,0x17af,0x1968,0x1970,0x190d,0x1978,0x1980,0x1f8e, +0x1988,0x1990,0x18d3,0x1f8e,0x1997,0x17e7,0x199a,0x17b0,0x1f8e,0x19a2,0x19a9,0x17e4,0x19ae,0x19b6,0x19bd,0x1784, +0x1771,0x1f8e,0x19c5,0x1f8e,0x1771,0x18d3,0x17e4,0x19cb,0x17bb,0x19d2,0x1f8e,0x1f8e,0x191d,0x19da,0x19e2,0x19ea, +0x1f8e,0x19f2,0x1784,0x19fa,0x1949,0x1997,0x1a00,0x1a08,0x1a10,0x1a18,0x1f8e,0x1a20,0x1a28,0x1947,0x1870,0x1a30, +0x1997,0x1a34,0x194e,0x1f8e,0x19f7,0x1f8e,0x1a3b,0x17bc,0x1787,0x1a43,0x180b,0x1f8e,0x1a49,0x1f8e,0x17b1,0x1f8e, +0x1f8e,0x1a4e,0x1a56,0x1a3b,0x17bd,0x1a5e,0x1a64,0x1a6a,0x1a72,0x190f,0x1a7a,0x189c,0x1a82,0x17c0,0x1a89,0x1a91, +0x194e,0x1a99,0x1aa0,0x1aa8,0x1aac,0x17d2,0x1ab4,0x1795,0x1abc,0x1ac3,0x1f8e,0x178b,0x1ac9,0x1acf,0x1948,0x17af, +0x1ad7,0x1ade,0x1ae3,0x18d3,0x1a34,0x1aeb,0x1af3,0x1afb,0x1777,0x1a3b,0x1776,0x1f8e,0x1afd,0x189b,0x1b05,0x1f8e, +0x178c,0x1b0c,0x1b12,0x1b1a,0x1b21,0x1b29,0x1b31,0x1777,0x1786,0x1a59,0x1b37,0x1b3f,0x1f8e,0x178d,0x1f8e,0x1b47, +0x1b12,0x1b4e,0x1997,0x17b6,0x1f8e,0x17e4,0x178d,0x177a,0x1b56,0x17e3,0x1f8e,0x17b1,0x1b5e,0x1b64,0x1f8e,0x1b6a, +0x1b72,0x17bc,0x1790,0x1b79,0x1b81,0x1f8e,0x180b,0x19f2,0x19f0,0x1f8e,0x1b89,0x17af,0x1b8c,0x194e,0x1b94,0x199a, +0x1aa4,0x1f8e,0x1b9b,0x1b9f,0x1ba7,0x1bae,0x17b0,0x1a3b,0x190f,0x1bb5,0x194e,0x1bbb,0x1845,0x1a7f,0x19ee,0x180d, +0x1bc1,0x1bc9,0x1bd0,0x1f8e,0x1f8e,0x1bd6,0x1f8e,0x1f8e,0x1bdd,0x190f,0x1794,0x1f8e,0x17e5,0x1f8e,0x1a3a,0x1be2, +0x178d,0x1be9,0x1bf1,0x180b,0x1bf6,0x1f8e,0x1bfe,0x178a,0x1f8e,0x17e4,0x1c06,0x1c0e,0x1997,0x1ada,0x17e5,0x17bb, +0x1f8e,0x1790,0x1c15,0x1794,0x1776,0x1c1d,0x1c25,0x178a,0x1c2d,0x1c35,0x189b,0x17e3,0x1784,0x1c3d,0x1c45,0x1c4d, +0x1f8e,0x19dd,0x1c55,0x1784,0x190f,0x1f8e,0x1a80,0x1c59,0x1c5f,0x1c67,0x17af,0x1c6d,0x1c74,0x1c7c,0x1c84,0x1f8e, +0x1c8c,0x1c91,0x1f8e,0x1c98,0x1ca0,0x1ca7,0x1caf,0x1cb5,0x188d,0x1cbd,0x1cc5,0x1f8e,0x1f8e,0x1ccd,0x1f8e,0x18d3, +0x180b,0x1ca3,0x1cd2,0x1784,0x1cda,0x1790,0x1ce1,0x1ce9,0x1f8e,0x1cf1,0x1cf7,0x1cfe,0x1d06,0x17ac,0x1d0d,0x1d0f, +0x178d,0x1f8e,0x180b,0x17e3,0x189c,0x1f8e,0x1f8e,0x1f8e,0x1f8e,0x1a4e,0x1d17,0x1f8e,0x1d1e,0x177a,0x1d25,0x17e3, +0x17bc,0x1d2d,0x17e4,0x17bd,0x1d32,0x1d39,0x1afd,0x1f8e,0x1d41,0x17d0,0x1f8e,0x1f8e,0x1d48,0x1f8e,0x178a,0x1d4f, +0x1794,0x17e3,0x1a3a,0x1997,0x1790,0x1771,0x1f8e,0x1b56,0x17e0,0x177b,0x17b0,0x1f8e,0x1f8e,0x1a3b,0x1f8e,0x1a06, +0x1d54,0x1f8e,0x178d,0x1f8e,0x1d5b,0x194e,0x19f2,0x1776,0x1d5f,0x1ca2,0x1d64,0x1afd,0x1794,0x1d69,0x1790,0x1d70, +0x1d78,0x194e,0x194e,0x17b0,0x1846,0x1b55,0x17b0,0x1d80,0x189c,0x19ca,0x1997,0x17b1,0x1c46,0x1f8e,0x18d3,0x177b, +0x1b10,0x1d84,0x1d8b,0x18d3,0x1f8e,0x1f8e,0x1f8e,0x1d93,0x19a5,0x17e3,0x1f8e,0x1d9a,0x1da2,0x1da9,0x1f8e,0x1db1, +0x1db9,0x1dc1,0x178a,0x1dc9,0x1791,0x1be3,0x177b,0x1790,0x1f8e,0x1dd1,0x1f8e,0x1dd9,0x1de1,0x1f8e,0x1f8e,0x1f8e, +0x1f8e,0x178d,0x1de9,0x18b0,0x1df1,0x17bd,0x1df5,0x1ada,0x1dfd,0x1f8e,0x1f8e,0x17e5,0x1f8e,0x17bd,0x17e4,0x1997, +0x17fb,0x1771,0x1d89,0x1e02,0x180b,0x1e0a,0x1c00,0x177b,0x1795,0x1d84,0x1a3a,0x1f8e,0x189c,0x1e11,0x1e19,0x178b, +0x1f8e,0x1e1f,0x1b55,0x1f8e,0x1f8e,0x178a,0x1b65,0x1784,0x17bc,0x1e25,0x17af,0x180b,0x1e2d,0x1e34,0x17e3,0x1e3c, +0x1e40,0x189b,0x19f2,0x1e48,0x1e50,0x189c,0x1e58,0x189b,0x17e5,0x17d1,0x1f8e,0x1e60,0x1e68,0x1e6f,0x1f8e,0x1e77, +0x1e7f,0x17e3,0x1b11,0x1e87,0x1f8e,0x1f8e,0x1f8e,0x1f8e,0x1f8e,0x1f8e,0x1f8e,0x1e8e,0x19c8,0x1e96,0x1e9e,0x1f8e, +0x1f8e,0x1ea6,0x1ca1,0x1eae,0x1eb6,0x1ebe,0x1f8e,0x1ec5,0x1ecd,0x1ed4,0x1edc,0x1d5b,0x195c,0x1ee2,0x1eea,0x17e5, +0x1afd,0x1ef1,0x1ef8,0x1eff,0x1f8e,0x194e,0x17bc,0x1f06,0x17af,0x180b,0x1f0d,0x1f8e,0x1f8e,0x1afd,0x1f8e,0x1f15, +0x1f1b,0x180b,0x1abe,0x19f2,0x1f8e,0x1f22,0x1e10,0x1f2a,0x1f32,0x1902,0x19ed,0x183f,0x1e30,0x1f8e,0x189b,0x1784, +0x1f3a,0x1f8e,0x1f42,0x1f4a,0x1f8e,0x1f8e,0x1f8e,0x1f8e,0x1f51,0x1f58,0x1f8e,0x1776,0x17b0,0x1772,0x17e4,0x1b12, +0x1f60,0x1f8e,0x1f8e,0x180b,0x1f68,0x1f6f,0x1f8e,0x17e9,0x1f77,0x17bd,0x1f7e,0x1776,0x1f8e,0x1f86,0x2534,0x291f, +0x21a0,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6, +0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6,0x21a6, +0x21a6,0x21a6,0x21a6,0x21a6,0xb66,0x2198,0xb6e,0x25d0,0x2501,0x2501,0x2501,0x2501,0x2501,0x2501,0x2501,0x2501, +0x24fc,0xb76,0x24b7,0x24af,0x24b9,0x25c8,0x25c8,0xb7e,0x2397,0x242b,0x24c1,0x24c5,0x248f,0x2626,0xb86,0xb8e, +0x23f3,0xb96,0x2460,0xb9e,0x2519,0x251c,0xba6,0x254c,0x24e5,0x24ec,0xbae,0xbb6,0x2580,0x2584,0xbbe,0xbc6, +0x24dd,0xbce,0xbd6,0x2554,0x25bc,0x25c0,0xbde,0xbe6,0xbee,0xbf6,0x2770,0xbfe,0x283e,0x283e,0x2594,0xc06, +0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031, +0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033, +0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035, +0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030, +0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032, +0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034, +0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036, +0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031, +0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033, +0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035, +0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030, +0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032, +0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034, +0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036, +0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031, +0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033, +0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035, +0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030, +0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032, +0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034, +0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036, +0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0x2036,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035,0xc0e,0xc15,0xc18, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018, +0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018, +0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e, +0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e, +0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e, +0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e, +0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e, +0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e, +0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e, +0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e, +0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e, +0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e, +0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e, +0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e, +0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x170e,0x175c,0x175c,0x175c,0x175c,0x175c,0x175c,0x175c,0x175c, +0x1761,0x1769,0x2337,0x1438,0x2413,0x2413,0x143c,0x1443,0xc20,0xc28,0xc30,0x15cc,0x15d3,0x15db,0x15e3,0x15eb, +0x164c,0x164c,0x15b4,0x15bc,0x15f3,0x1643,0x1644,0x1654,0x15fb,0x1600,0x1608,0x1610,0x1618,0x1620,0x1628,0x15c4, +0xc38,0x1743,0xc40,0xc48,0x1630,0x1636,0x163b,0xc50,0xc58,0x1723,0x172b,0x1716,0x171b,0xc60,0xc68,0xc70, +0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018, +0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018,0x2018, +0x181c,0x181c,0x185c,0x189c,0x18dc,0x191c,0x195c,0x199c,0x19dc,0x1a1c,0x1a5c,0x1a9c,0x1adc,0x1b1c,0x1b5c,0x1b9c, +0x1bdc,0x1c18,0x1c58,0x1c98,0x1cd8,0x1d0c,0x1d48,0x1d88,0x1dc8,0x1e08,0x1e44,0x1e84,0x1ec4,0x1f04,0x1f44,0x1f84, +0xa80,0xac0,0xb00,0xb40,0xb80,0xbb5,0xbf5,0x16da,0xc18,0xa40,0xa40,0xa40,0xc50,0xc90,0x15b6,0x15b6, +0x15b7,0xcd0,0xd04,0xa40,0xa40,0xd13,0xd53,0xd73,0xa40,0xd99,0xdd9,0xe19,0xe59,0xe99,0xf59,0xed9, +0x125d,0x1299,0x12d9,0x12e8,0x1322,0x1349,0x12e8,0x137f,0x13a5,0x13cc,0x1403,0x12e8,0x1431,0x1470,0x12e8,0x149f, +0x14d5,0x14ef,0x12e8,0x1417,0xfe9,0x152f,0x1536,0x1029,0x1576,0x1034,0x15f7,0x15f7,0x15f7,0x106a,0x109d,0x10dd, +0x1637,0x1637,0x111d,0x1677,0x169a,0x171a,0x115d,0x109d,0x109d,0x109d,0x109d,0x109d,0x109d,0x109d,0x109d,0x109d, +0x109d,0x109d,0x109d,0x109d,0x109d,0x109d,0x109d,0x109d,0x109d,0x109d,0x175a,0x175a,0x175a,0x175a,0x175a,0x119d, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xefc, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xf19, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xefc, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xf19, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xefc, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xf19, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xefc, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xf19, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xefc, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xf19, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xefc, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xf19, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xefc, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xf19, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xefc, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xf19, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xefc, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xf19, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xefc, -0xf7c,0xf8c,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xefc, -0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4, -0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11a4, -0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4, -0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11a4, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0xc6a,0xc71,0xc79,0x5e9,0x234c,0x234c,0x234c,0xc81,0xc89,0xc8c,0x239c,0x238c,0xc94,0xc9c,0xca0,0xca4, -0x5e9,0x5e9,0x5e9,0x5e9,0xcac,0x24d6,0xcb4,0xcbc,0x221b,0xcc4,0xcca,0xcce,0xcd6,0x23e0,0xcde,0x5e9, -0x2213,0x2206,0x220b,0x2354,0xce6,0xcee,0xcf2,0xcf8,0x2783,0xd00,0x27d3,0xd07,0xd0b,0xd13,0x2a06,0xd1b, -0x276b,0x276b,0x276b,0x276b,0x276b,0x276b,0x276b,0x276b,0x276b,0xd23,0xd2b,0xd33,0xd3b,0xd3f,0x5e9,0x5e9, -0xd47,0xd4a,0xd52,0x279b,0xd5a,0xd62,0x5e9,0xd6a,0xd72,0xd7a,0xd82,0x5e9,0x26d3,0xd8a,0xd92,0x283a, -0xd9a,0xda1,0xda9,0x25a5,0x2793,0x5e9,0x2773,0xdb1,0x2569,0xdb9,0xdc1,0xdc9,0xdd1,0xdd9,0x5e9,0x5e9, -0x2559,0x2559,0xde1,0x5e9,0x2813,0xde9,0x280b,0xdf1,0x2935,0xdf9,0x29e6,0xe01,0xe08,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0xe10,0x297b,0xe18,0xe20,0xe27,0x293d,0xe2f,0xe36,0xe3d,0xe45,0xe49,0xe50,0xe58, -0x2603,0x2605,0xe60,0xe67,0x2579,0x2571,0xe6f,0xe75,0x2707,0xe7d,0xe85,0xe89,0x26f3,0x26f7,0x26eb,0xe91, -0xe99,0x27bb,0xea1,0x5e9,0xea9,0xeb1,0x27a3,0xeb9,0xec1,0xec7,0xecf,0xed7,0xedf,0xee4,0xeec,0xef4, -0x289f,0x2897,0xefc,0xf04,0x27cb,0x27c3,0xf0c,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x27f3,0xf14,0xf1c,0x5e9, -0x27e3,0x27db,0xf24,0xf2c,0x26ff,0xf34,0xf3c,0xf43,0xf4b,0xf53,0xf5b,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x291d,0xf63,0x5e9,0x5e9,0x5e9,0x27b3,0x27ab,0xf6b,0xf73,0xf79,0xf81,0x5e9,0x5e9,0xf89,0xf8d,0xf95, -0x290d,0x28cc,0xf9d,0x2905,0x28c4,0xfa5,0x27eb,0xfad,0xfb5,0x5e9,0x5e9,0xfbd,0x5e9,0x5e9,0x29fe,0xfc5, -0xfcd,0xfd2,0xfda,0xfe1,0xfe6,0xfec,0x5e9,0x5e9,0xff4,0xff8,0x1000,0x1008,0x100e,0x1016,0x101a,0x1022, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x102a,0x1032,0x1037,0x103f,0x5e9,0x5e9,0x1046,0x2955,0x104e, -0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d, -0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x243d,0x2442,0x1056,0x5e9,0x5e9,0x5e9, -0x243d,0x243d,0x243d,0x105e,0x281b,0x281b,0x281b,0x281b,0x281b,0x281b,0x1066,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x106a,0x29a3,0x29a3,0x106e,0x2531,0x2531,0x2531,0x2531,0x2531, -0x2531,0x2531,0x2531,0x2531,0x2531,0x2531,0x2531,0x2531,0x2531,0x2531,0x2531,0x2531,0x2531,0x2533,0x2531,0x253b, -0x2531,0x2531,0x2531,0x2531,0x2531,0x2531,0x253e,0x2531,0x2531,0x2531,0x2531,0x2531,0x2545,0x1076,0x29de,0x29de, -0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de, -0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x107e,0x2842,0x2842, -0x2842,0x2842,0x2842,0x2842,0x2842,0x2842,0x2842,0x2842,0x2842,0x2842,0x2842,0x2842,0x2847,0x2842,0x2842,0x2842, -0x1086,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x29ee,0x108e, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x260d,0x260d,0x260d,0x260d,0x260d,0x260d,0x260d,0x260d,0x260d,0x260d, -0x260d,0x260d,0x260d,0x260d,0x260d,0x260d,0x260d,0x1096,0x109e,0x10a6,0x29ab,0x10aa,0x10b2,0x10b7,0x2763,0x275b, -0x10bf,0x10c7,0x10cf,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x29f6,0x10d7,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x292d,0x2925,0x10df,0x10e7,0x10ee,0x5e9,0x26e3,0x26e3, -0x10f6,0x26db,0x10fe,0x5e9,0x5e9,0x1106,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7, -0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28b4,0x2993,0x2993, -0x2993,0x2993,0x2993,0x2993,0x2993,0x2993,0x2993,0x2993,0x2993,0x2993,0x2993,0x2993,0x110e,0x1114,0x111c,0x5e9, -0x5e9,0x5e9,0x2a16,0x2a16,0x2a16,0x111f,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x1124,0x26c3,0x28f4,0x28f4,0x28f4,0x28f4,0x28f4,0x28f4,0x28f4,0x28f5,0x112c, -0x1131,0x1138,0x28fd,0x28fd,0x28fd,0x28fd,0x28fd,0x28fd,0x28fd,0x28fd,0x28fd,0x28fd,0x28fd,0x113c,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x277b,0x277b,0x277b,0x1144,0x1149,0x1151,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x29d3,0x29d3,0x29d3,0x29d3, -0x29d3,0x29d3,0x29d6,0x1159,0x29d3,0x29d3,0x29d3,0x29d3,0x29d3,0x29d3,0x29d3,0x29d3,0x29d3,0x29d3,0x29d3,0x29d3, -0x29d3,0x1161,0x1168,0x1170,0x29b3,0x1178,0x117f,0x299b,0x299b,0x299b,0x1186,0x5e9,0x21a4,0x21a4,0x21a4,0x21a4, -0x21a4,0x21a4,0x21a4,0x118e,0x21a4,0x1196,0x21a5,0x219c,0x21ad,0x21b3,0x21bb,0x119e,0x2394,0x2394,0x11a6,0x5e9, -0x5e9,0x5e9,0x11ae,0x11b6,0x235c,0x235c,0x11be,0x11c6,0x5e9,0x5e9,0x5e9,0x5e9,0x21ec,0x21f3,0x11ce,0x21f6, -0x11d6,0x11de,0x11e6,0x21f0,0x11ee,0x11f6,0x11fe,0x21f5,0x21fd,0x21ec,0x21f3,0x21ef,0x21f6,0x21fe,0x21ed,0x21f4, -0x21f0,0x1205,0x21c3,0x21cb,0x21d2,0x21d9,0x21c6,0x21ce,0x21d5,0x21dc,0x120d,0x21e4,0x2823,0x2823,0x2823,0x2823, -0x2823,0x2823,0x2823,0x2823,0x2823,0x2823,0x2823,0x2823,0x2823,0x2823,0x2823,0x2823,0x286f,0x282b,0x286f,0x2832, -0x1215,0x121d,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x1225,0x122d,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x1235,0x123d,0x29bb,0x1245, -0x124a,0x5e9,0x5e9,0x5e9,0x295d,0x1252,0x125a,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x125e,0x1263,0x2965,0x126b,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x1273,0x1278,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x127f,0x1284,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x128c,0x1294,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x129c,0x278b,0x278b,0x278b,0x278b, -0x278b,0x278b,0x12a4,0x5e9,0x288f,0x2887,0x12ac,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x12b4, -0x2915,0x12b9,0x5e9,0x5e9,0x12c1,0x12c2,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x12ca,0x12d2,0x12da,0x12e2, -0x12ea,0x12f2,0x5e9,0x12f9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x1301,0x2726,0x1307,0x2726, -0x130f,0x1314,0x131c,0x5e9,0x284f,0x2877,0x287f,0x28d4,0x2857,0x2945,0x285f,0x28dc,0x294d,0x294d,0x13ae,0x13b6, -0x13be,0x2983,0x13c6,0x13ce,0x296d,0x296d,0x296d,0x296d,0x1324,0x296d,0x2973,0x132c,0x1363,0x1363,0x1363,0x1363, -0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363, -0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x1363,0x13d5,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9, -0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x5e9,0x1333,0x2452,0x133b,0x2454,0x2454, -0x133f,0x1347,0x134f,0x1357,0x25b5,0x2511,0x25bd,0x25c5,0x25ad,0x135f,0x1363,0x136a,0x1372,0x1376,0x137e,0x1386, -0x1363,0x1363,0x1363,0x1363,0x2634,0x263c,0x2634,0x2642,0x264a,0x2615,0x2652,0x265a,0x2634,0x2662,0x266a,0x2671, -0x2679,0x261d,0x2634,0x267e,0x2625,0x262c,0x2686,0x268c,0x272e,0x2735,0x2717,0x2693,0x269b,0x26a3,0x26ab,0x271f, -0x2634,0x26b3,0x138e,0x1396,0x25e8,0x25e8,0x25e8,0x25eb,0x2726,0x2726,0x139e,0x13a6,0x13e5,0x22b3,0x22b3,0x22b3, -0x13e6,0x13e6,0x13e6,0x13e6,0x2364,0x2364,0x2364,0x2364,0x2364,0x2364,0x2364,0x13ee,0x13e6,0x13e6,0x13e6,0x13e6, -0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6, -0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6, -0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6, -0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x22ab,0x1429,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x1431,0x2867,0x2867,0x2867, -0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867, -0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867, -0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867, -0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x1439,0x28ec,0x28ec,0x28ec, -0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec, -0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x1441,0x29cb,0x29cb,0x29cb, -0x29cb,0x29cb,0x29cb,0x29cb,0x29cb,0x29cb,0x29cb,0x29cb,0x29cb,0x29cb,0x29cb,0x29cb,0x29cb,0x29cb,0x29cb,0x1445, -0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429, -0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429, -0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429, -0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429, -0x2223,0x2223,0x2223,0x2223,0x2223,0x2223,0x2223,0x2223,0x2223,0x2223,0x2223,0x2223,0x2223,0x2223,0x2223,0x2223, -0x144d,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429, -0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429, -0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1455, -0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b, -0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x145d,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3, -0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3, -0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3, -0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e, -0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e, -0x2a0e,0x2a0e,0x2a0e,0x1465,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429, -0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429, -0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429, -0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429,0x1429, -0x1429,0x1429,0x1429,0x1455,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006, -0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006, -0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006, -0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006, -0x2006,0x2006,0x2006,0x1ffe,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006, -0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006, -0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006, -0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006,0x2006, -0x2006,0x2006,0x2006,0x2006,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x2230,0x2234,0x222b,0x2239, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x2240,0x2245,0x222e,0x222b,0x224c,0x222b,0x223a,0x222b,0x222b,0x2252,0x222b,0x222b,0x222b,0x222b, -0x225a,0x222b,0x222b,0x225e,0x2264,0x226c,0x225e,0x226e,0x222b,0x2271,0x2276,0x222b,0x222b,0x227a,0x222b,0x2282, -0x222b,0x222b,0x2285,0x228d,0x222b,0x222b,0x2295,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x2239,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x2243, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x223a,0x222b,0x222b,0x222b,0x2263,0x222b,0x222b,0x222b,0x2282,0x222b, -0x222b,0x222b,0x2299,0x222b,0x222b,0x222b,0x226c,0x222b,0x2277,0x222b,0x2276,0x2243,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x2240,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x225e,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x2240,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x2245,0x222b,0x2282,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x2242,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x2245,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x2276,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x229f,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222c,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x2264,0x222b,0x222b,0x222b,0x222b,0x222b,0x2243,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x226c,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x22a6,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x222b, -0x222b,0x222b,0x222b,0x222b,0x222b,0x222b,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5, -0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5, -0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5, -0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5, -0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d5,0x25d8,0x26bb,0x26bb,0x26bb,0x26bb,0x26bb,0x26bb,0x2867,0x2867,0x2867, -0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867, -0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867, -0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867, -0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x2867,0x28a7,0x28a7,0x28a7, -0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7, -0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7, -0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7, -0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28a7,0x28ac,0x28ec,0x28ec, -0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec, -0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec, -0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec, -0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x28ec,0x298b,0x298b, -0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b, -0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b, -0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b, -0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x298b,0x29c3,0x29c3, -0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3, -0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3, -0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3, -0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x29c3,0x1461,0x2a0e, -0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e, -0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e, -0x2a0e,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de, -0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de, -0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de, -0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de, -0x29de,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e, -0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e, -0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e, -0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e,0x2a0e, -0x2a0e,0x5c8,0x5c8,0x5c8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xf3,0xff,0xf9, -0xf9,0xfc,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,0x4a4,0x49e,0x483,0x46b,0x477,0x474,0x46b,0x486,0x471,0x47d,0x46b,0x495, -0x489,0x480,0x4a1,0x47a,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x48c,0x489, -0x48f,0x48f,0x48f,0x49e,0x46b,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa, -0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x471, -0x477,0x47d,0x49b,0x465,0x498,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7, -0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x471, -0x492,0x46e,0x48f,0x12,0,0,0,0,0,0,0,0,0,0,0,0, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xf19, +0xf99,0xfa9,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xf19, +0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d, +0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x11dd, +0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d, +0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x11dd, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0xc78,0xc7f,0xc87,0x607,0x2377,0x2377,0x2377,0xc8f,0xc97,0xc9a,0x23c7,0x23b7,0xca2,0xcaa,0xcae,0xcb2, +0x607,0x607,0x607,0x607,0xcba,0x2509,0xcc2,0xcca,0x2246,0xcd2,0xcd8,0xcdc,0xce4,0x240b,0xcec,0x607, +0x223e,0x2231,0x2236,0x237f,0xcf4,0xcfc,0xd00,0xd06,0x27b6,0xd0e,0x2806,0xd15,0xd19,0xd21,0x2a69,0xd29, +0x279e,0x279e,0x279e,0x279e,0x279e,0x279e,0x279e,0x279e,0x279e,0xd31,0xd39,0xd41,0xd49,0xd4d,0x607,0x607, +0xd55,0xd58,0xd60,0x27ce,0xd68,0xd70,0x607,0xd78,0xd80,0xd88,0xd90,0x607,0x2706,0xd98,0xda0,0x2875, +0xda8,0xdaf,0xdb7,0x25d8,0x27c6,0x607,0x27a6,0xdbf,0x259c,0xdc7,0xdcf,0xdd7,0xddf,0xde7,0x607,0x607, +0x258c,0x258c,0xdef,0x607,0x284e,0xdf7,0x2846,0xdff,0x2970,0xe07,0x2a49,0xe0f,0xe16,0x607,0x607,0x607, +0x607,0x607,0x607,0xe1e,0x29be,0xe26,0xe2e,0xe35,0x2978,0xe3d,0xe44,0xe4b,0xe53,0xe57,0xe5e,0xe66, +0x2636,0x2638,0xe6e,0xe75,0x25ac,0x25a4,0xe7d,0xe83,0x273a,0xe8b,0xe93,0xe97,0x2726,0x272a,0x271e,0xe9f, +0xea7,0x27ee,0xeaf,0x607,0xeb7,0xebf,0x27d6,0xec7,0xecf,0xed5,0xedd,0xee5,0xeed,0xef2,0xefa,0xf02, +0x28da,0x28d2,0xf0a,0xf12,0x27fe,0x27f6,0xf1a,0x607,0x607,0x607,0x607,0x607,0x2826,0xf22,0xf2a,0x607, +0x2816,0x280e,0xf32,0xf3a,0x2732,0xf42,0xf4a,0xf51,0xf59,0xf61,0xf69,0x607,0x607,0x607,0x607,0x607, +0x2958,0xf71,0x607,0x607,0x607,0x27e6,0x27de,0xf79,0xf81,0xf87,0xf8f,0x607,0x607,0xf97,0xf9b,0xfa3, +0x2948,0x2907,0xfab,0x2940,0x28ff,0xfb3,0x281e,0xfbb,0xfc3,0x607,0x607,0xfcb,0x607,0x607,0x2a61,0xfd3, +0xfdb,0xfe0,0xfe8,0xfef,0xff4,0xffa,0x607,0x607,0x1002,0x1006,0x100e,0x1016,0x101c,0x1024,0x1028,0x1030, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x1038,0x1040,0x1045,0x104d,0x607,0x607,0x1054,0x2990,0x105c, +0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470, +0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2470,0x2475,0x1064,0x607,0x607,0x607, +0x2470,0x2470,0x2470,0x2468,0x2856,0x2856,0x2856,0x2856,0x2856,0x2856,0x106c,0x2abd,0x2aa0,0x2ab3,0x2ab5,0x2ab5, +0x2ab5,0x2ab5,0x2aa8,0x2aab,0x1074,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x1078,0x29fe,0x29fe,0x107c,0x2564,0x2564,0x2564,0x2564,0x2564,0x2564,0x2564,0x2564,0x2564,0x2564,0x2564, +0x2564,0x2564,0x2564,0x2564,0x2564,0x2564,0x2564,0x2566,0x2564,0x256e,0x2564,0x2564,0x2564,0x2564,0x2564,0x2564, +0x2571,0x2564,0x2564,0x2564,0x2564,0x2564,0x2578,0x1084,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41, +0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41, +0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x108c,0x287d,0x287d,0x287d,0x287d,0x287d,0x287d,0x287d,0x287d, +0x287d,0x287d,0x287d,0x287d,0x287d,0x287d,0x2882,0x287d,0x287d,0x287d,0x1094,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x2a51,0x109c,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x2640,0x2640,0x2640,0x2640,0x2640,0x2640,0x2640,0x2640,0x2640,0x2640,0x2640,0x2640,0x2640,0x2640,0x2640,0x2640, +0x2640,0x10a4,0x10ac,0x10b4,0x2a06,0x10b8,0x10c0,0x10c5,0x2796,0x278e,0x10cd,0x10d5,0x10dd,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x2a59,0x10e5,0x607,0x607,0x607,0x607, +0x607,0x607,0x2968,0x2960,0x10ed,0x10f5,0x10fc,0x607,0x2716,0x2716,0x1104,0x270e,0x110c,0x607,0x607,0x1114, +0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2, +0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28ef,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x29de, +0x29de,0x29de,0x29de,0x29de,0x29de,0x29de,0x111c,0x1123,0x29d6,0x112b,0x607,0x607,0x2a79,0x2a79,0x2a79,0x1133, +0x2ac5,0x2ac5,0x2ac5,0x2ac5,0x2ac5,0x2ac5,0x2ac5,0x2ac5,0x2ac5,0x2ac5,0x2ac5,0x2ac5,0x2ac5,0x2ac5,0x2ac5,0x2ac5, +0x113b,0x2ac5,0x1143,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x1148,0x26f6,0x292f,0x292f,0x292f,0x292f,0x292f,0x292f,0x292f,0x2930,0x1150,0x1155,0x115c,0x2938, +0x2938,0x2938,0x2938,0x2938,0x2938,0x2938,0x2938,0x2938,0x2938,0x2938,0x1160,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x27ae,0x27ae,0x27ae,0x1168,0x116d,0x1175,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a39, +0x117d,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x1185,0x118c, +0x1194,0x2a0e,0x119c,0x11a3,0x29ee,0x29ee,0x29ee,0x11aa,0x607,0x21c6,0x21c6,0x21c6,0x21c6,0x21c6,0x21c6,0x21c6, +0x11b2,0x21c6,0x21cd,0x21d0,0x21be,0x21d8,0x21de,0x21e6,0x282e,0x23bf,0x23bf,0x11ba,0x2a81,0x11c2,0x607,0x11ca, +0x11d2,0x2387,0x2387,0x11da,0x11e2,0x607,0x607,0x607,0x607,0x2217,0x221e,0x11ea,0x2221,0x11f2,0x11fa,0x1202, +0x221b,0x120a,0x1212,0x121a,0x2220,0x2228,0x2217,0x221e,0x221a,0x2221,0x2229,0x2218,0x221f,0x221b,0x1221,0x21ee, +0x21f6,0x21fd,0x2204,0x21f1,0x21f9,0x2200,0x2207,0x1229,0x220f,0x285e,0x285e,0x285e,0x285e,0x285e,0x285e,0x285e, +0x285e,0x285e,0x285e,0x285e,0x285e,0x285e,0x285e,0x285e,0x285e,0x28aa,0x2866,0x28aa,0x286d,0x1231,0x1239,0x607, +0x607,0x1241,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x29f6,0x2a1e,0x2a91,0x2a98,0x1249,0x607,0x124f,0x2a89,0x1257,0x125f,0x2a16,0x1267,0x126c,0x607,0x607, +0x607,0x2998,0x1274,0x127c,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x1280,0x1285,0x29a0, +0x128d,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x1295, +0x129a,0x607,0x607,0x607,0x607,0x607,0x607,0x12a1,0x12a6,0x607,0x607,0x607,0x607,0x607,0x607,0x12ae, +0x12b6,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x12be,0x27be,0x27be,0x27be,0x27be,0x27be,0x27be,0x12c6, +0x607,0x28ca,0x28c2,0x12ce,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x12d6,0x2950,0x12db,0x607, +0x607,0x12e3,0x12e4,0x607,0x607,0x607,0x607,0x607,0x607,0x12ec,0x12f4,0x12fc,0x1304,0x130c,0x1314,0x607, +0x131b,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x1323,0x2759,0x1329,0x2759,0x1331,0x1336,0x133e, +0x607,0x288a,0x28b2,0x28ba,0x290f,0x2892,0x2980,0x289a,0x2917,0x2988,0x2988,0x13d0,0x13d8,0x29a8,0x29c6,0x13e0, +0x13e8,0x29b0,0x29b0,0x29b0,0x29b0,0x1346,0x29b0,0x29b6,0x134e,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385, +0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385, +0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x1385,0x13ef,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607, +0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x607,0x1355,0x2485,0x135d,0x2487,0x2487,0x1361,0x1369,0x1371, +0x1379,0x25e8,0x2544,0x25f0,0x25f8,0x25e0,0x1381,0x1385,0x138c,0x1394,0x1398,0x13a0,0x13a8,0x1385,0x1385,0x1385, +0x1385,0x2667,0x266f,0x2667,0x2675,0x267d,0x2648,0x2685,0x268d,0x2667,0x2695,0x269d,0x26a4,0x26ac,0x2650,0x2667, +0x26b1,0x2658,0x265f,0x26b9,0x26bf,0x2761,0x2768,0x274a,0x26c6,0x26ce,0x26d6,0x26de,0x2752,0x2667,0x26e6,0x13b0, +0x13b8,0x261b,0x261b,0x261b,0x261e,0x2759,0x2759,0x13c0,0x13c8,0x13ff,0x22de,0x22de,0x22de,0x1400,0x1400,0x1400, +0x1400,0x238f,0x238f,0x238f,0x238f,0x238f,0x238f,0x238f,0x1408,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400, +0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400, +0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400, +0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400, +0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x1400,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x22d6, +0x1443,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x144b,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2, +0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2, +0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2, +0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2, +0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x1453,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927, +0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927, +0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x145b,0x2a2e,0x2a2e,0x2a2e,0x2a2e,0x2a2e,0x2a2e, +0x2a2e,0x2a2e,0x2a2e,0x2a2e,0x2a2e,0x2a2e,0x2a2e,0x2a2e,0x2a2e,0x2a2e,0x2a2e,0x2a2e,0x145f,0x1443,0x1443,0x1443, +0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443, +0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443, +0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443, +0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x224e,0x224e,0x224e, +0x224e,0x224e,0x224e,0x224e,0x224e,0x224e,0x224e,0x224e,0x224e,0x224e,0x224e,0x224e,0x224e,0x1467,0x1443,0x1443, +0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443, +0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443, +0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x146f,0x29ce,0x29ce,0x29ce, +0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce, +0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x1477,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26, +0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26, +0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a71,0x2a71,0x2a71, +0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71, +0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71, +0x147f,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443, +0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x2acd,0x2acd,0x2acd, +0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd, +0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x1443, +0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443, +0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x146f,0x2028,0x2028,0x2028, +0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028, +0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028, +0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028, +0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2020,0x2028,0x2028,0x2028, +0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028, +0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028, +0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028, +0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2028,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x225b,0x225f,0x2256,0x2264,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x226b,0x2270,0x2259,0x2256,0x2277, +0x2256,0x2265,0x2256,0x2256,0x227d,0x2256,0x2256,0x2256,0x2256,0x2285,0x2256,0x2256,0x2289,0x228f,0x2297,0x2289, +0x2299,0x2256,0x229c,0x22a1,0x2256,0x2256,0x22a5,0x2256,0x22ad,0x2256,0x2256,0x22b0,0x22b8,0x2256,0x2256,0x22c0, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2264,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x226e,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2265, +0x2256,0x2256,0x2256,0x228e,0x2256,0x2256,0x2256,0x22ad,0x2256,0x2256,0x2256,0x22c4,0x2256,0x2256,0x2256,0x2297, +0x2256,0x22a2,0x2256,0x22a1,0x226e,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x226b,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2289,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x226b,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2270,0x2256,0x22ad,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x226d,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2270,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x22a1, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x22ca, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2257,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x228f, +0x2256,0x2256,0x2256,0x2256,0x2256,0x226e,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2297,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x22d1,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256, +0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2256,0x2608, +0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608, +0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608, +0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608, +0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x2608,0x260b, +0x26ee,0x26ee,0x26ee,0x26ee,0x26ee,0x26ee,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2, +0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2, +0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2, +0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2, +0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28a2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2, +0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2, +0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2, +0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2, +0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e2,0x28e7,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927, +0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927, +0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927, +0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927, +0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x2927,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce, +0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce, +0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce, +0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce, +0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x29ce,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26, +0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26, +0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26, +0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26, +0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x2a26,0x147b,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71, +0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71, +0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41, +0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41, +0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41, +0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41, +0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71, +0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71, +0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71, +0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71, +0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2a71,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd, +0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd, +0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd, +0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd, +0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x2acd,0x5e6,0x5e6,0x12,0x12,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,0xf3,0xff,0xf9,0xf9,0xfc,0x12,0x12,0x12,0x12,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x4aa,0x4a4,0x489,0x471, +0x47d,0x47a,0x471,0x48c,0x477,0x483,0x471,0x49b,0x48f,0x486,0x4a7,0x480,0x46e,0x46e,0x46e,0x46e, +0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x492,0x48f,0x495,0x495,0x495,0x4a4,0x471,0x4b6,0x4b6,0x4b6, +0x4b6,0x4b6,0x4b6,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0, +0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x477,0x47d,0x483,0x4a1,0x46b,0x49e,0x4b3,0x4b3,0x4b3, +0x4b3,0x4b3,0x4b3,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad, +0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x477,0x498,0x474,0x495,0x12,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x12,0x12,0x12,0x12,0x12,0x102,0x12,0x12,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,0x4b,0x36f,0x474,0x477,0x375,0x477,0x46b,0x366,0x357,0xa5,0x3cc,0xcc, -0x48f,0x333,0x369,0x462,0x372,0x39f,0x345,0x345,0x35d,0x84,0x366,0x3ea,0x35a,0x345,0x3cc,0xcc, -0x33f,0x33f,0x33f,0x36f,0x282,0x282,0x282,0x282,0x282,0x282,0x3e1,0x282,0x282,0x282,0x282,0x282, -0x282,0x282,0x282,0x282,0x3e1,0x282,0x282,0x282,0x282,0x282,0x282,0x396,0x3e1,0x282,0x282,0x282, -0x282,0x282,0x3e1,0x3db,0x3de,0x3de,0x27c,0x27c,0x27c,0x27c,0x3db,0x27c,0x3de,0x3de,0x3de,0x27c, -0x3de,0x3de,0x27c,0x27c,0x3db,0x27c,0x3de,0x3de,0x27c,0x27c,0x27c,0x396,0x3db,0x3de,0x3de,0x27c, -0x3de,0x27c,0x3db,0x27c,0x282,0x3de,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c, -0x282,0x27c,0x282,0x27c,0x27f,0x3db,0x282,0x3de,0x26d,0x267,0x282,0x27c,0x282,0x27c,0x282,0x3de, -0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x3e1,0x3db,0x282,0x27c,0x282,0x3de, -0x26d,0x267,0x282,0x27c,0x282,0x3db,0x3d8,0x3d5,0x282,0x27c,0x282,0x27c,0x3c0,0x282,0x27c,0x282, -0x27c,0x282,0x27c,0x3d8,0x3d5,0x3e1,0x3db,0x282,0x3de,0x282,0x27c,0x282,0x3de,0x3e4,0x3e1,0x3db, -0x282,0x3de,0x26d,0x267,0x282,0x27c,0x3e1,0x3db,0x282,0x27c,0x26d,0x267,0x282,0x27c,0x282,0x27c, -0x282,0x27c,0x282,0x27c,0x282,0x27c,0x26d,0x267,0x282,0x27c,0x3e1,0x3db,0x282,0x27c,0x282,0x3de, -0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x282,0x27c,0x282, -0x27c,0x282,0x27c,0x270,0x252,0x27f,0x26a,0x264,0x26a,0x264,0x27f,0x26a,0x264,0x27f,0x27f,0x26a, -0x264,0x25e,0x27f,0x27f,0x27f,0x27f,0x279,0x26a,0x27f,0x264,0x27f,0x27f,0x27f,0x279,0x264,0x264, -0x26a,0x27f,0x264,0x26a,0x282,0x27c,0x26a,0x264,0x26a,0x264,0x26a,0x26a,0x264,0x26a,0x25e,0x25e, -0x26a,0x264,0x26a,0x282,0x27c,0x26a,0x27f,0x27f,0x279,0x26a,0x264,0x27f,0x26a,0x24c,0x25e,0x261, -0x26a,0x264,0x25e,0x24c,0x258,0x258,0x258,0x258,0x276,0x276,0x270,0x276,0x276,0x270,0x276,0x276, -0x270,0x282,0x3de,0x282,0x3de,0x282,0x3de,0x282,0x3de,0x26d,0x3c6,0x26d,0x3c6,0x26d,0x3c6,0x26d, -0x3c6,0x279,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26a,0x264,0x282,0x27c,0x282,0x27c,0x26d,0x267, -0x26d,0x267,0x282,0x27c,0x267,0x276,0x276,0x270,0x26d,0x267,0x7c8,0x7c8,0x7e0,0x7dd,0x26d,0x267, -0x26d,0x267,0x26d,0x267,0x25b,0x255,0x25b,0x255,0x25b,0x255,0x25b,0x255,0x25b,0x255,0x25b,0x255, -0x25b,0x255,0x25b,0x255,0x25b,0x255,0x25b,0x255,0x25b,0x255,0x25b,0x255,0x7e0,0x7dd,0x7e0,0x7dd, -0x7c8,0x7c5,0x7da,0x7d4,0x9ab,0xa77,0x7d7,0x7d1,0x7d7,0x7d1,0x7da,0x7d4,0x7da,0x7d4,0x7da,0x7d4, -0x7da,0x7d4,0x7da,0x7d4,0x7da,0x7d4,0x7da,0x7d4,0xa74,0xa74,0xa74,0xb8b,0xb8b,0xb8b,0xb8e,0xb8e, -0xb8b,0xb8e,0xb8e,0xb8b,0xb8b,0xb8e,0xc7b,0xc7e,0xc84,0xc7e,0xc7e,0xc7b,0xc7e,0xc7b,0xc7e,0xc7b, -0xc84,0xc81,0xc7e,0xc7b,0x252,0x3c3,0x252,0x279,0x279,0x252,0x279,0x279,0x252,0x279,0x252,0x279, -0x252,0x252,0x252,0x252,0x252,0x3c3,0x252,0x279,0x252,0x252,0x252,0x252,0x279,0x279,0x252,0x252, -0x252,0x252,0x252,0x252,0x252,0x252,0x279,0x252,0x252,0x252,0x252,0x25e,0x252,0x252,0x252,0x252, -0x25e,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x279,0x252,0x279, -0x252,0x252,0x252,0x252,0x252,0x252,0x279,0x252,0x258,0x258,0x252,0x252,0x252,0x252,0x252,0x252, -0x252,0x252,0x25e,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x7cb,0x7cb,0x7cb, -0x7cb,0x7cb,0xa74,0xa74,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x96,0x96,0x9c, -0x2e8,0x96,0x96,0x96,0x93,0x93,0x6c,0x6c,0x354,0x6c,0x96,0x3f0,0x99,0x3f0,0x3f0,0x3f0, -0x99,0x3f3,0x96,0x96,0x363,0x9f,0x6c,0x6c,0x6c,0x6c,0x6c,0x2eb,0x357,0x3ed,0x357,0x357, -0x72,0x357,0x6c,0x873,0x285,0x285,0x285,0x285,0x285,0x6c,0x6c,0x6c,0x6c,0x6c,0x777,0x777, -0x762,0x75c,0x762,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23, -0xa23,0xa23,0xa23,0xa23,0x67b,0x67e,0x681,0x687,0x68a,0x68d,0x690,0x693,0x696,0x684,0x699,0x69c, -0x69f,0x6a5,0x6a8,0x66c,0x6a2,0x6ab,0x66c,0x6ae,0x66c,0x66c,0x672,0x66c,0x66c,0x66c,0x66c,0x678, -0x66c,0x66c,0x66c,0x66c,0x66c,0x672,0x672,0x6b1,0x6b4,0x6b7,0x678,0x678,0x678,0x66c,0x66c,0x66c, -0x66c,0x6ba,0x6b7,0x66c,0x6bd,0x6c0,0x672,0x66c,0x672,0x66c,0x672,0x66c,0x66c,0x66c,0x66c,0x66c, -0x66c,0x66c,0x66c,0x66c,0x675,0x675,0x6c3,0x675,0x675,0x6c6,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd, -0x8fd,0x8fd,0x8fd,0xa17,0xb01,0xb01,0xb01,0xb01,0xb01,0xb01,0xb01,0xb01,0xc45,0xc3f,0xc3f,0xc3f, -0xc42,0xb04,0xb0a,0xb04,0x66f,0x66f,0x900,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d, -0xa1d,0xa1d,0xa1d,0xa1d,0xd65,0xd62,0xd65,0xd62,0x2ee,0x30f,0xd65,0xd62,0,0,0x1bc,0xc69, -0xc69,0xc69,0x4e,0x12ab,0,0,0,0,0x1b6,0x6f,0x1dd,0x78,0x1dd,0x1dd,0x1dd,0, -0x1dd,0,0x1dd,0x1dd,0x1da,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd, -0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x1dd,0x1dd, -0x1da,0x1da,0x1da,0x1da,0x1da,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba, -0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x1d7,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x1da,0x1da, -0x1da,0x1da,0x1da,0xd68,0x1e0,0x1e0,0x1e3,0x1d4,0x1d4,0x1e0,0x1d1,0x7a1,0x9a8,0x9a5,0x1c2,0x79e, -0x1c2,0x79e,0x1c2,0x79e,0x1c2,0x79e,0x171,0x16e,0x171,0x16e,0x171,0x16e,0x171,0x16e,0x171,0x16e, -0x171,0x16e,0x171,0x16e,0x1e0,0x1e0,0x1d1,0x1c8,0x92d,0x92a,0x9a2,0xa53,0xa50,0xa59,0xa53,0xa50, -0xb7f,0xb7c,0xb7c,0xb7c,0x786,0x3b4,0x195,0x198,0x195,0x195,0x195,0x198,0x195,0x195,0x195,0x195, -0x198,0x786,0x198,0x195,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b4,0x3b1,0x3b1, -0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1, -0x3b1,0x3b1,0x3b1,0x3b1,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ae,0x3ab,0x3ab, -0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab, -0x780,0x3ae,0x18f,0x192,0x18f,0x18f,0x18f,0x192,0x18f,0x18f,0x18f,0x18f,0x192,0x780,0x192,0x18f, -0x17d,0x177,0x17d,0x177,0x17d,0x177,0x17d,0x177,0x17d,0x177,0x17d,0x177,0x17d,0x177,0x17d,0x177, -0x17d,0x177,0x17d,0x177,0x17d,0x177,0x180,0x17a,0x17d,0x177,0x17d,0x177,0x17d,0x177,0x17d,0x177, -0x17d,0x177,0x174,0x666,0x669,0x657,0x657,0xec1,0x8b2,0x8b2,0x99c,0x999,0x783,0x77d,0x783,0x77d, -0x195,0x18f,0x195,0x18f,0x195,0x18f,0x195,0x18f,0x195,0x18f,0x195,0x18f,0x17d,0x177,0x195,0x18f, -0x195,0x18f,0x195,0x18f,0x195,0x18f,0x17d,0x177,0x195,0x18f,0x195,0x18f,0x195,0x18f,0x195,0x18f, -0x195,0x18f,0x195,0x18f,0x195,0x18f,0x195,0x18f,0x17d,0x177,0x195,0x18f,0x195,0x18f,0x195,0x18f, -0x195,0x18c,0x186,0x189,0x183,0x99c,0x999,0x189,0x183,0x99c,0x999,0x189,0x183,0x99c,0x999,0xc66, -0x198,0x192,0x198,0x192,0x195,0x18f,0x198,0x192,0x195,0x18f,0x18c,0x186,0x198,0x192,0x198,0x192, -0x195,0x18f,0x198,0x192,0x198,0x192,0x198,0x192,0x195,0x18f,0x18c,0x186,0x786,0x780,0x198,0x192, -0x198,0x192,0x198,0x192,0x198,0x192,0xb5b,0xb58,0x198,0x192,0xc63,0xc60,0xc63,0xc60,0xc63,0xc60, -0x996,0x993,0x996,0x993,0x996,0x993,0x996,0x993,0x996,0x993,0x996,0x993,0x996,0x993,0x996,0x993, -0xc63,0xc60,0xc63,0xc60,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50, -0xd56,0xd50,0xd56,0xd50,0xee8,0xee5,0x10c2,0x10bf,0x129f,0x129c,0x129f,0x129c,0x129f,0x129c,0x129f,0x129c, -0,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153, -0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0,0,0x156,0x144,0x144, -0x144,0x14a,0x144,0x147,0x166b,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150, +0,0,0,0,0,0,0,0,0,0,0,0,0x12,0x12,0x12,0x12, +0x12,0x102,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x4b,0x375,0x47a,0x47d, +0x37b,0x47d,0x471,0x36c,0x35d,0xa5,0x3d2,0xcc,0x495,0x339,0x36f,0x468,0x378,0x3a5,0x34b,0x34b, +0x363,0x84,0x36c,0x3f0,0x360,0x34b,0x3d2,0xcc,0x345,0x345,0x345,0x375,0x285,0x285,0x285,0x285, +0x285,0x285,0x3e7,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x3e7,0x285,0x285,0x285, +0x285,0x285,0x285,0x39c,0x3e7,0x285,0x285,0x285,0x285,0x285,0x3e7,0x3e1,0x3e4,0x3e4,0x27f,0x27f, +0x27f,0x27f,0x3e1,0x27f,0x3e4,0x3e4,0x3e4,0x27f,0x3e4,0x3e4,0x27f,0x27f,0x3e1,0x27f,0x3e4,0x3e4, +0x27f,0x27f,0x27f,0x39c,0x3e1,0x3e4,0x3e4,0x27f,0x3e4,0x27f,0x3e1,0x27f,0x285,0x3e4,0x285,0x27f, +0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x282,0x3e1,0x285,0x3e4, +0x26d,0x267,0x285,0x27f,0x285,0x27f,0x285,0x3e4,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f, +0x285,0x27f,0x3e7,0x3e1,0x285,0x27f,0x285,0x3e4,0x26d,0x267,0x285,0x27f,0x285,0x3e1,0x3de,0x3db, +0x285,0x27f,0x285,0x27f,0x3c6,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x3de,0x3db,0x3e7,0x3e1,0x285, +0x3e4,0x285,0x27f,0x285,0x3e4,0x3ea,0x3e7,0x3e1,0x285,0x3e4,0x26d,0x267,0x285,0x27f,0x3e7,0x3e1, +0x285,0x27f,0x26d,0x267,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x26d,0x267, +0x285,0x27f,0x3e7,0x3e1,0x285,0x27f,0x285,0x3e4,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f, +0x285,0x27f,0x285,0x27f,0x285,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x273,0x252,0x282,0x26a,0x264, +0x26a,0x264,0x282,0x26a,0x264,0x282,0x282,0x26a,0x264,0x25e,0x282,0x282,0x282,0x282,0x27c,0x26a, +0x282,0x264,0x282,0x282,0x282,0x27c,0x264,0x264,0x26a,0x282,0x264,0x26a,0x285,0x27f,0x26a,0x264, +0x26a,0x264,0x26a,0x26a,0x264,0x26a,0x25e,0x25e,0x26a,0x264,0x26a,0x285,0x27f,0x26a,0x282,0x282, +0x27c,0x26a,0x264,0x282,0x26a,0x24c,0x25e,0x261,0x26a,0x264,0x25e,0x24c,0x258,0x258,0x258,0x258, +0x279,0x279,0x273,0x279,0x279,0x273,0x279,0x279,0x273,0x285,0x3e4,0x285,0x3e4,0x285,0x3e4,0x285, +0x3e4,0x26d,0x3cc,0x26d,0x3cc,0x26d,0x3cc,0x26d,0x3cc,0x27c,0x26d,0x267,0x26d,0x267,0x26d,0x267, +0x26a,0x264,0x285,0x27f,0x285,0x27f,0x26d,0x267,0x26d,0x267,0x285,0x27f,0x267,0x279,0x279,0x273, +0x26d,0x267,0x7d1,0x7d1,0x7e9,0x7e6,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x25b,0x255,0x25b,0x255, +0x25b,0x255,0x25b,0x255,0x25b,0x255,0x25b,0x255,0x25b,0x255,0x25b,0x255,0x25b,0x255,0x25b,0x255, +0x25b,0x255,0x25b,0x255,0x7e9,0x7e6,0x7e9,0x7e6,0x7d1,0x7ce,0x7e3,0x7dd,0x9b4,0xa80,0x7e0,0x7da, +0x7e0,0x7da,0x7e3,0x7dd,0x7e3,0x7dd,0x7e3,0x7dd,0x7e3,0x7dd,0x7e3,0x7dd,0x7e3,0x7dd,0x7e3,0x7dd, +0xa7d,0xa7d,0xa7d,0xb97,0xb97,0xb97,0xb9a,0xb9a,0xb97,0xb9a,0xb9a,0xb97,0xb97,0xb9a,0xc87,0xc8a, +0xc90,0xc8a,0xc8a,0xc87,0xc8a,0xc87,0xc8a,0xc87,0xc90,0xc8d,0xc8a,0xc87,0x252,0x3c9,0x252,0x27c, +0x27c,0x252,0x27c,0x27c,0x252,0x27c,0x252,0x27c,0x252,0x252,0x252,0x252,0x252,0x3c9,0x252,0x27c, +0x252,0x252,0x252,0x252,0x27c,0x27c,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x27c,0x252, +0x252,0x252,0x252,0x25e,0x252,0x252,0x252,0x252,0x25e,0x252,0x252,0x252,0x252,0x252,0x252,0x252, +0x252,0x252,0x252,0x252,0x252,0x27c,0x252,0x27c,0x270,0x252,0x252,0x252,0x252,0x252,0x27c,0x252, +0x258,0x258,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x25e,0x252,0x252,0x252,0x252,0x252, +0x252,0x252,0x252,0x252,0x252,0x7d4,0x7d4,0x7d4,0x7d4,0x7d4,0xa7d,0xa7d,0x288,0x288,0x288,0x288, +0x288,0x288,0x288,0x288,0x288,0x96,0x96,0x9c,0x2eb,0x96,0x96,0x96,0x93,0x93,0x6c,0x6c, +0x35a,0x6c,0x96,0x3f6,0x99,0x3f6,0x3f6,0x3f6,0x99,0x3f9,0x96,0x96,0x369,0x9f,0x6c,0x6c, +0x6c,0x6c,0x6c,0x2ee,0x35d,0x3f3,0x35d,0x35d,0x72,0x35d,0x6c,0x87c,0x288,0x288,0x288,0x288, +0x288,0x6c,0x6c,0x6c,0x6c,0x6c,0x780,0x780,0x76b,0x765,0x76b,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c, +0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0x684,0x687,0x68a,0x690, +0x693,0x696,0x699,0x69c,0x69f,0x68d,0x6a2,0x6a5,0x6a8,0x6ae,0x6b1,0x675,0x6ab,0x6b4,0x675,0x6b7, +0x675,0x675,0x67b,0x675,0x675,0x675,0x675,0x681,0x675,0x675,0x675,0x675,0x675,0x67b,0x67b,0x6ba, +0x6bd,0x6c0,0x681,0x681,0x681,0x675,0x675,0x675,0x675,0x6c3,0x6c0,0x675,0x6c6,0x6c9,0x67b,0x675, +0x67b,0x675,0x67b,0x675,0x675,0x675,0x675,0x675,0x675,0x675,0x675,0x675,0x67e,0x67e,0x6cc,0x67e, +0x67e,0x6cf,0x906,0x906,0x906,0x906,0x906,0x906,0x906,0x906,0x906,0xa20,0xb0d,0xb0d,0xb0d,0xb0d, +0xb0d,0xb0d,0xb0d,0xb0d,0xc51,0xc4b,0xc4b,0xc4b,0xc4e,0xb10,0xb16,0xb10,0x678,0x678,0x909,0xa26, +0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xd71,0xd6e,0xd71,0xd6e, +0x2f1,0x312,0xd71,0xd6e,0,0,0x1bc,0xc75,0xc75,0xc75,0x4e,0x12c3,0,0,0,0, +0x1b6,0x6f,0x1dd,0x78,0x1dd,0x1dd,0x1dd,0,0x1dd,0,0x1dd,0x1dd,0x1da,0x3c3,0x3c3,0x3c3, +0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0,0x3c3, +0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x3c3,0x1dd,0x1dd,0x1da,0x1da,0x1da,0x1da,0x1da,0x3c0,0x3c0,0x3c0, +0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x1d7,0x3c0, +0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x1da,0x1da,0x1da,0x1da,0x1da,0xd74,0x1e0,0x1e0,0x1e3,0x1d4, +0x1d4,0x1e0,0x1d1,0x7aa,0x9b1,0x9ae,0x1c2,0x7a7,0x1c2,0x7a7,0x1c2,0x7a7,0x1c2,0x7a7,0x171,0x16e, +0x171,0x16e,0x171,0x16e,0x171,0x16e,0x171,0x16e,0x171,0x16e,0x171,0x16e,0x1e0,0x1e0,0x1d1,0x1c8, +0x936,0x933,0x9ab,0xa5c,0xa59,0xa62,0xa5c,0xa59,0xb8b,0xb88,0xb88,0xb88,0x78f,0x3ba,0x195,0x198, +0x195,0x195,0x195,0x198,0x195,0x195,0x195,0x195,0x198,0x78f,0x198,0x195,0x3b7,0x3b7,0x3b7,0x3b7, +0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3ba,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7, +0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b1,0x3b1,0x3b1,0x3b1, +0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b4,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1, +0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x789,0x3b4,0x18f,0x192,0x18f,0x18f,0x18f,0x192, +0x18f,0x18f,0x18f,0x18f,0x192,0x789,0x192,0x18f,0x17d,0x177,0x17d,0x177,0x17d,0x177,0x17d,0x177, +0x17d,0x177,0x17d,0x177,0x17d,0x177,0x17d,0x177,0x17d,0x177,0x17d,0x177,0x17d,0x177,0x180,0x17a, +0x17d,0x177,0x17d,0x177,0x17d,0x177,0x17d,0x177,0x17d,0x177,0x174,0x66f,0x672,0x660,0x660,0xed3, +0x8bb,0x8bb,0x9a5,0x9a2,0x78c,0x786,0x78c,0x786,0x195,0x18f,0x195,0x18f,0x195,0x18f,0x195,0x18f, +0x195,0x18f,0x195,0x18f,0x17d,0x177,0x195,0x18f,0x195,0x18f,0x195,0x18f,0x195,0x18f,0x17d,0x177, +0x195,0x18f,0x195,0x18f,0x195,0x18f,0x195,0x18f,0x195,0x18f,0x195,0x18f,0x195,0x18f,0x195,0x18f, +0x17d,0x177,0x195,0x18f,0x195,0x18f,0x195,0x18f,0x195,0x18c,0x186,0x189,0x183,0x9a5,0x9a2,0x189, +0x183,0x9a5,0x9a2,0x189,0x183,0x9a5,0x9a2,0xc72,0x198,0x192,0x198,0x192,0x195,0x18f,0x198,0x192, +0x195,0x18f,0x18c,0x186,0x198,0x192,0x198,0x192,0x195,0x18f,0x198,0x192,0x198,0x192,0x198,0x192, +0x195,0x18f,0x18c,0x186,0x78f,0x789,0x198,0x192,0x198,0x192,0x198,0x192,0x198,0x192,0xb67,0xb64, +0x198,0x192,0xc6f,0xc6c,0xc6f,0xc6c,0xc6f,0xc6c,0x99f,0x99c,0x99f,0x99c,0x99f,0x99c,0x99f,0x99c, +0x99f,0x99c,0x99f,0x99c,0x99f,0x99c,0x99f,0x99c,0xc6f,0xc6c,0xc6f,0xc6c,0xd62,0xd5c,0xd62,0xd5c, +0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xefa,0xef7,0x10d4,0x10d1, +0x12b7,0x12b4,0x12b7,0x12b4,0x12b7,0x12b4,0x12b7,0x12b4,0,0x153,0x153,0x153,0x153,0x153,0x153,0x153, +0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153, +0x153,0x153,0x153,0,0x1ad9,0x156,0x144,0x144,0x144,0x14a,0x144,0x147,0x1683,0x150,0x150,0x150, 0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150, -0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x14d,0x166b,0x312,0x774,0,0,0x1296,0x1296,0x1194, -0,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f, -0x72f,0x72f,0xc24,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f, -0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0xce4,0x612,0x612,0x612,0x213,0x612, -0x20a,0x612,0x612,0x216,0x732,0xc27,0xb85,0xc2a,0,0,0,0,0,0,0,0, +0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x14d, +0x1683,0x315,0x77d,0x1ad9,0x1ad9,0x12ae,0x12ae,0x11a6,0,0x738,0x738,0x738,0x738,0x738,0x738,0x738, +0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0xc33,0x738,0x738,0x738,0x738,0x738, +0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b, +0x61b,0x61b,0xcf0,0x61b,0x61b,0x61b,0x213,0x61e,0x20a,0x61b,0x61b,0x216,0x73b,0xc36,0xb91,0xc36, +0x1b4b,0x1b4b,0,0,0,0,0,0,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228, 0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228, -0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0,0,0,0,0x1677, -0x21c,0x21c,0x21c,0x210,0x20d,0,0,0,0,0,0,0,0,0,0,0, -0xa3e,0xa3e,0xa3e,0xa3e,0x1191,0x128d,0xd3e,0xd3e,0xd3e,0xd3b,0xd3b,0xb34,0x2f4,0xa38,0xa35,0xa35, -0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xe79,0xe79,0xe79,0xe79,0xe79,0x2f1,0x1260,0x1863,0xb3d,0x2f7, -0x10bc,0x138,0x13b,0x13b,0x13b,0x13b,0x13b,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138, -0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0xd41,0xd41,0xd47,0xd41,0xd41, -0x2fa,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x65d,0x65d,0x65d,0x65d,0x65d, -0x65d,0x65d,0x65d,0x8f7,0x8fa,0x8fa,0xae6,0xaec,0xae9,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0x114f, -0x315,0x315,0x315,0x315,0x315,0x315,0x315,0x315,0x315,0x315,0x117,0x114,0x111,0x10e,0x98d,0x98d, -0x65a,0x123,0x138,0x141,0x138,0x129,0x129,0x129,0x129,0x138,0x138,0x138,0x138,0x138,0x138,0x138, -0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x120,0x138,0x138,0x138, -0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x126,0x126,0x126,0x126,0x138,0x138,0x126,0x138,0x126, -0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x120,0x138,0x138,0x138,0x138,0x138,0x126,0x138, -0x126,0x138,0x138,0x138,0x76e,0x76e,0x138,0x138,0x138,0x138,0x138,0x76e,0x13b,0x138,0x13b,0x138, -0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x771,0x138,0x138,0x138,0x13b, -0x318,0x138,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x108,0x10e,0x5e2,0x5e2,0x5df,0x5df,0x5df, -0x5df,0x13e,0x13e,0x5df,0x5df,0x10e,0x5e2,0x5e2,0x5e2,0x5df,0xa3b,0xa3b,0x11a,0x11a,0x11a,0x11a, -0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x76e,0x76e,0x76e,0x76b,0x76b,0xa3b,0x840,0x840,0x840,0x83a, -0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x837,0x83a,0x837,0,0x843,0x83d,0x8e2,0x83d,0x83d, -0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d, -0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0xa83,0xa83,0xa83,0x8e8,0x8e8,0x8e8,0x8e8, -0x8e8,0x8e8,0x8e8,0x8e8,0x8e8,0x8e8,0x8e8,0x8e8,0x8e8,0x8e8,0x8e8,0x8e8,0x8e5,0x8e5,0x8e5,0x8e5, -0x8e5,0x8e5,0x8e5,0x8e5,0x8e5,0x8e5,0x8e5,0,0,0xa83,0xa83,0xa83,0xb37,0xb3a,0xb3a,0xb37, -0xb37,0xb37,0xb3a,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb3a,0xb37,0xb3a,0xb3a, -0xb37,0xb37,0xb3a,0xb3a,0xb3a,0xb37,0xb3a,0xb37,0xb37,0xb37,0xd47,0xd47,0xd47,0xd47,0xd44,0xd44, -0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd41,0xd41,0x846,0x846,0x846,0x846, +0x228,0x228,0x228,0,0,0,0,0x168f,0x21c,0x21c,0x21c,0x210,0x20d,0,0,0, +0,0,0,0,0,0,0,0,0xa47,0xa47,0xa47,0xa47,0x11a3,0x12a5,0xd4a,0xd4a, +0xd4a,0xd47,0xd47,0xb40,0x2f7,0xa41,0xa3e,0xa3e,0xaf2,0xaf2,0xaf2,0xaf2,0xaf2,0xaef,0xe88,0xe8b, +0xe8b,0xe8b,0xe8b,0x2f4,0x1278,0x187b,0xb49,0x2fa,0x10ce,0x138,0x13b,0x13b,0x13b,0x13b,0x13b,0x138, +0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138, +0x138,0x138,0x138,0xd4d,0xd4d,0xd53,0xd4d,0xd4d,0x2fd,0x138,0x138,0x138,0x138,0x138,0x138,0x138, +0x138,0x138,0x138,0x666,0x666,0x666,0x666,0x666,0x666,0x666,0x666,0x900,0x903,0x903,0xaf8,0xaf8, +0xaf5,0xc27,0xc27,0xc27,0xc2a,0xc27,0xc27,0x1161,0x318,0x318,0x318,0x318,0x318,0x318,0x318,0x318, +0x318,0x318,0x117,0x114,0x111,0x10e,0x996,0x996,0x663,0x123,0x138,0x141,0x138,0x129,0x129,0x129, +0x129,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138, +0x138,0x138,0x138,0x138,0x120,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x126, +0x126,0x126,0x126,0x138,0x138,0x126,0x138,0x126,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138, +0x120,0x138,0x138,0x138,0x138,0x138,0x126,0x138,0x126,0x138,0x138,0x138,0x777,0x777,0x138,0x138, +0x138,0x138,0x138,0x777,0x13b,0x138,0x13b,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138, +0x138,0x138,0x138,0x77a,0x138,0x138,0x138,0x13b,0x31b,0x138,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5, +0x5e5,0x108,0x10e,0x5e8,0x5e8,0x5e5,0x5eb,0x5e5,0x5e5,0x13e,0x13e,0x5e5,0x5e5,0x10e,0x5e8,0x5e8, +0x5e8,0x5e5,0xa44,0xa44,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x777,0x777, +0x777,0x774,0x774,0xa44,0x849,0x849,0x849,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x840, +0x843,0x840,0,0x84c,0x846,0x8eb,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846, 0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846, -0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846, -0x846,0x846,0x8eb,0x8eb,0x8eb,0x8eb,0x8eb,0x8eb,0x8eb,0x8eb,0x8eb,0x8eb,0x8eb,0x9b1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xca8,0xca8,0xca8,0xca8, -0xca8,0xca8,0xca8,0xca8,0xca8,0xca8,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab, -0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab, -0xcab,0xcab,0xcab,0xcab,0xcae,0xcae,0xcae,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6, -0xcb1,0xcb1,0xca2,0xca2,0xca5,0xcb7,0xcb4,0,0,0x1704,0x168c,0x168c,0x106b,0x106b,0x106b,0x106b, -0xf93,0x106b,0x106b,0x106b,0xf93,0x106b,0x106b,0x106b,0x106b,0x1068,0,0,0xf90,0xf90,0xf90,0xf90, -0xf90,0xf90,0xf8d,0xf96,0xf90,0xf96,0xf90,0xf90,0xf90,0xf96,0xf96,0,0x110d,0x110d,0x110d,0x110d, -0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d, -0x110d,0x110d,0x110d,0x110d,0x110d,0x116d,0x116d,0x116d,0,0,0x110a,0,0x15d8,0x15d8,0x15d8,0x15d8, -0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0,0,0,0,0,0x185a,0x185a,0x185a,0x185a, -0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x1854,0x185d,0x185d,0x185d, -0x185d,0x185d,0x1857,0x1a4f,0x1866,0x1866,0,0,0,0,0,0x1a04,0x18db,0x18db,0x18db,0x18db, -0x18db,0x18db,0x18db,0x18db,0x1299,0x5eb,0x15f,0x15f,0,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b, -0x168,0,0,0x16b,0x16b,0,0,0x16b,0x16b,0x5af,0x5af,0x5af,0x5af,0x5af,0x5af,0x5af, -0x5af,0x5af,0x5af,0x5af,0x5af,0,0x5af,0x5af,0x5af,0x5af,0x5af,0x5af,0x5af,0,0x5af,0, -0,0,0x5af,0x5af,0x5af,0x5af,0,0,0x5ee,0xa41,0x5eb,0x15f,0x15f,0x5eb,0x5eb,0x5eb, -0x5eb,0,0,0x15f,0x15f,0,0,0x162,0x162,0x6d5,0xb40,0,0,0,0,0, -0,0,0,0x5e8,0,0,0,0,0x5ac,0x5ac,0,0x5ac,0x165,0x165,0x5e5,0x5e5, -0,0,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x5af,0x5af,0x15c,0x15c, -0x159,0x159,0x159,0x159,0x159,0x15c,0x159,0xedc,0x15d2,0x15cf,0x16fb,0,0,0xaf2,0x606,0xa6b, -0,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0,0,0,0,0x1fe,0x1fe,0,0,0x1fe, -0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0,0x1fe,0x1fe, -0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0,0x1fe,0x1fb,0,0x1fe,0x1fb,0,0x1fe,0x1fe,0,0, -0x609,0,0x1f2,0x1f2,0x1f2,0x606,0x606,0,0,0,0,0x606,0x606,0,0,0x606, -0x606,0x60f,0,0,0,0xe85,0,0,0,0,0,0,0,0x1fb,0x1fb,0x1fb, -0x1fe,0,0x1fb,0,0,0,0,0,0,0,0x321,0x321,0x321,0x321,0x321,0x321, -0x321,0x321,0x321,0x321,0x606,0x60c,0x1f8,0x1f8,0x1f5,0xe85,0x1674,0,0,0,0,0, -0,0,0,0,0,0x5fd,0x600,0x1e6,0,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef, -0xa68,0x1ef,0,0x1ef,0x1ef,0x1ef,0,0x1ef,0x1ef,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be, -0x5be,0x5be,0x5be,0x5be,0x5be,0,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0,0x5be,0x5be, -0,0x5be,0x5be,0x5be,0x5be,0x5be,0,0,0x603,0x1e9,0x1e6,0x1e6,0x1e6,0x600,0x600,0x600, -0x600,0x600,0,0x600,0x600,0x1e6,0,0x1e6,0x1e6,0x6db,0,0,0x1ec,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x1e9,0xa65,0xaef,0xaef, -0,0,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x11a6,0xa62,0,0, -0,0,0,0,0,0x14e5,0x1629,0x162f,0x1629,0x162c,0x162c,0x162c,0,0x630,0x2a3,0x2a3, -0,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2ac,0,0,0x2af,0x2af,0,0,0x2af, -0x2af,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0,0x5c7,0x5c7, -0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0,0x5c7,0x5c7,0,0xae0,0x5c7,0x5c7,0x5c7,0x5c7,0,0, -0x633,0x2a9,0x630,0x630,0x2a3,0x630,0x630,0x630,0xe97,0,0,0x2a3,0x2a6,0,0,0x2a6, -0x2a6,0x6e1,0,0,0,0,0,0,0,0x1821,0x630,0x62d,0,0,0,0, -0x5c4,0x5c4,0,0x5c7,0x2a9,0x2a9,0xe97,0xe97,0,0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0, -0x2a0,0x2a0,0x2a0,0x2a0,0x29d,0xae3,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0,0,0,0, -0,0,0,0,0,0,0x636,0x2b8,0,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0, -0,0,0x2b8,0x2b8,0x2b8,0,0x2b8,0x2b8,0x2bb,0x2b8,0,0,0,0x2b8,0x2b8,0, -0x2b8,0,0x2b8,0x2b8,0,0,0,0x2b8,0x2b8,0,0,0,0x2b8,0x2b8,0x2b8,0, -0,0,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0xb97,0x2b8,0x2b8,0x2b8,0,0, -0,0,0x63c,0x2b2,0x63c,0x2b2,0x2b2,0,0,0,0x2b2,0x2b2,0x2b2,0,0x2b5,0x2b5, -0x2b5,0x63f,0,0,0xdb3,0,0,0,0,0,0,0x639,0,0,0,0, -0,0,0,0,0,0,0xbe2,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a, -0x327,0x327,0x327,0xabf,0xa86,0xa86,0xa86,0xa86,0xa86,0xa89,0xa86,0,0,0,0,0, -0x13fe,0x2c1,0x2c4,0x2c4,0x1701,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2ca,0,0x2cd,0x2cd, -0x2cd,0,0x2cd,0x2cd,0x2cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd, -0x5cd,0,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5ca,0x5cd,0x5cd,0x13dd,0x5cd,0x5cd,0x5cd, -0x5cd,0x5cd,0,0,0x18e1,0xdb9,0x645,0x645,0x645,0x2c4,0x2c4,0x2c4,0x2c4,0,0x645,0x645, -0x648,0,0x645,0x645,0x645,0x6e4,0,0,0,0,0,0,0,0x642,0x642,0, -0xe5e,0xe5e,0x14e8,0,0x1a61,0x1887,0,0,0x2c7,0x2c7,0xe9a,0xe9a,0,0,0x2be,0x2be, -0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0,0,0,0,0,0,0,0x174c, -0xdb6,0xdb6,0xdb6,0xdb6,0xdb6,0xdb6,0xdb6,0xdb6,0x1527,0x13f2,0x22e,0x22e,0x167a,0x234,0x234,0x234, -0x234,0x234,0x234,0x234,0x231,0,0x234,0x234,0x234,0,0x234,0x234,0x234,0x234,0x234,0x234, -0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0,0x234,0x234,0x234,0x234,0x234,0x234, -0x234,0x231,0x234,0x234,0,0x234,0x234,0x234,0x234,0x234,0,0,0xaf5,0xa6e,0x22e,0x61b, -0x61e,0x22e,0x61b,0x22e,0x22b,0,0x61b,0x61e,0x61e,0,0x61e,0x61e,0x61b,0x621,0,0, -0,0,0,0,0,0x618,0x618,0,0,0,0,0,0x1a52,0x186c,0x231,0, -0x231,0x231,0xce7,0xce7,0,0,0x32d,0x32d,0x32d,0x32d,0x32d,0x32d,0x32d,0x32d,0x32d,0x32d, -0,0xc6c,0xc6c,0x1908,0,0,0,0,0,0,0,0,0,0,0,0, -0x1632,0x13f5,0x28e,0x28e,0x17d9,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x297,0,0x29a,0x29a, -0x29a,0,0x29a,0x29a,0x29a,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1, -0x28e,0x62a,0x62a,0x62a,0xe88,0,0x28e,0x28e,0x28e,0,0x291,0x291,0x28b,0x6de,0x10dd,0x152d, -0,0,0,0,0x1530,0x1530,0x1530,0x62a,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x1485, -0x294,0x294,0xe88,0xe88,0,0,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288, -0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0xd8f,0x152d,0x152d,0x152d,0xd92,0xd98,0xd98,0xd98,0xd98,0xd98,0xd98, -0,0x1824,0x825,0x825,0,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x82e,0x831, -0x831,0x834,0x834,0x834,0x834,0x834,0x834,0,0,0,0x834,0x834,0x834,0x834,0x82b,0x834, -0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834, -0x834,0x834,0,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0,0x834,0,0, -0x834,0x834,0x834,0x834,0x834,0x834,0x834,0,0,0,0x8df,0,0,0,0,0x8dc, -0x825,0x825,0x8dc,0x8dc,0x8dc,0,0x8dc,0,0x825,0x825,0x828,0x825,0x828,0x828,0x828,0x8d9, -0,0,0,0,0,0,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc, -0,0,0x825,0x822,0x81f,0,0,0,0,0,0,0,0,0,0,0, -0,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc, -0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc, -0x2dc,0x64b,0x2dc,0x2d9,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x654,0,0,0,0,0x2a, -0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2dc,0x2df,0x651,0x651,0x651,0x651,0x651,0x651,0x64b,0x64e,0x2d0, -0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d3,0x2d3,0,0,0,0, -0,0x243,0x243,0,0x243,0,0x1731,0x243,0x243,0x1731,0x243,0,0x1731,0x243,0x1731,0x1731, -0x1731,0x1731,0x1731,0x1731,0x243,0x243,0x243,0x243,0x1731,0x243,0x243,0x243,0x243,0x243,0x243,0x243, -0x1731,0x243,0x243,0x243,0,0x243,0,0x243,0x1731,0x1731,0x243,0x243,0x1731,0x243,0x243,0x23d, -0x243,0x624,0x243,0x23a,0x624,0x624,0x624,0x624,0x624,0x624,0x17a6,0x624,0x624,0x243,0,0, -0x249,0x249,0x249,0x249,0x249,0,0x246,0,0x627,0x627,0x627,0x627,0x627,0x624,0x194d,0, -0x237,0x237,0x237,0x237,0x237,0x237,0x237,0x237,0x237,0x237,0,0,0x240,0x240,0x11a9,0x11a9, -0x71d,0x71d,0x71d,0x71a,0x71d,0x71d,0x71d,0x71d,0,0x71d,0x71d,0x71d,0x71d,0x71a,0x71d,0x71d, -0x71d,0x71d,0x71a,0x71d,0x71d,0x71d,0x71d,0x71a,0x71d,0x71d,0x71d,0x71d,0x71a,0x71d,0x71d,0x71d, -0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71a,0x84f,0xdc5,0xdc5,0,0,0, -0,0x738,0x738,0x735,0x738,0x735,0x735,0x74a,0x735,0x74a,0x738,0x738,0x738,0x738,0x738,0x70e, -0x738,0x735,0x744,0x744,0x747,0x6f0,0x73b,0x73b,0x714,0x714,0x714,0x714,0x10e6,0x1158,0x1158,0x1158, -0x738,0x738,0x738,0x735,0x738,0x738,0x8f1,0x738,0,0x738,0x738,0x738,0x738,0x735,0x738,0x738, -0x738,0x738,0x735,0x738,0x738,0x738,0x738,0x735,0x738,0x738,0x738,0x738,0x735,0x738,0x8ee,0x8ee, -0x8ee,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x8f1,0x735,0x8f1,0x8f1,0x8f1,0,0x84c,0x84c, -0x849,0x849,0x849,0x849,0x849,0x849,0x8f4,0x849,0x849,0x849,0x849,0x849,0x849,0,0xdbc,0x849, -0xb9a,0xb9a,0xdbf,0xdc2,0xdbc,0xec7,0xec7,0xec7,0xec7,0x10e3,0x10e3,0,0,0,0,0, -0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0,0x11a3,0,0,0,0,0,0x11a3,0,0, -0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0, -0x798,0x798,0x798,0x798,0x798,0x798,0x798,0xb67,0x798,0,0x798,0x798,0x798,0x798,0,0, -0x798,0x798,0x798,0x798,0x798,0x798,0x798,0,0x798,0,0x798,0x798,0x798,0x798,0,0, -0x798,0x798,0x798,0x798,0x798,0x798,0x798,0xb64,0x798,0,0x798,0x798,0x798,0x798,0,0, -0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798, -0x798,0x798,0x798,0xb64,0x798,0,0x798,0x798,0x798,0x798,0,0,0x798,0x798,0x798,0x798, -0x798,0x798,0x798,0,0x798,0,0x798,0x798,0x798,0x798,0,0,0x798,0x798,0x798,0x798, -0x798,0x798,0x798,0xb67,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0,0x798,0x798,0x798,0x798, -0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0xb64,0x798,0,0x798,0x798, -0x798,0x798,0,0,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0xb64,0x798,0x798,0x798,0x798, -0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x795,0, -0,0x1155,0x1155,0xc1e,0xb61,0x78f,0x79b,0x78c,0x78c,0x78c,0x78c,0x79b,0x79b,0x792,0x792,0x792, -0x792,0x792,0x792,0x792,0x792,0x792,0x789,0x789,0x789,0x789,0x789,0x789,0x789,0x789,0x789,0x789, -0x789,0,0,0,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64, -0xb64,0xb64,0xb64,0xb64,0xb61,0xb61,0xb61,0xb61,0xb61,0xb61,0xb61,0xb61,0xb61,0xb61,0,0, -0,0,0,0,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a, -0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x1473,0,0,0x1470,0x1470,0x1470,0x1470, -0x1470,0x1470,0,0,0x816,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819, -0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x813, -0x810,0,0,0,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x861, -0x861,0x861,0x81c,0x81c,0x81c,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0,0,0, -0,0,0,0,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4,0x9b4, -0x9b4,0x188d,0x9b4,0x9b4,0x9b4,0x9b4,0xa05,0xa05,0xa08,0x18e4,0,0,0,0,0,0, -0,0,0,0x188d,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7, -0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0xa0b,0xa0b,0xa0e,0x9c0,0x9c0,0,0,0,0,0, -0,0,0,0,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba, -0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0xa11,0xa11,0,0,0,0,0,0,0,0, -0,0,0,0,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd, -0x9bd,0,0x9bd,0x9bd,0x9bd,0,0xa14,0xa14,0,0,0,0,0,0,0,0, -0,0,0,0,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x8b5,0x7b9,0x7b9,0x8c1,0x8c1,0x8c1, -0x8c1,0x8c1,0x8bb,0x8bb,0x8c1,0x8be,0x903,0x8b8,0x7c2,0x7c2,0x7b3,0x7bf,0x7ad,0x7a7,0x7b0,0x7aa, -0x7bc,0xaf8,0,0,0x7b6,0x7b6,0x7b6,0x7b6,0x7b6,0x7b6,0x7b6,0x7b6,0x7b6,0x7b6,0,0, -0,0,0,0,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0,0, -0,0,0,0,0x7e6,0x7e6,0x867,0x86a,0x7ec,0x864,0x7e9,0x7e6,0x7ef,0x7fe,0x7f2,0x8cd, -0x8cd,0x8cd,0x7e3,0x18de,0x7f5,0x7f5,0x7f5,0x7f5,0x7f5,0x7f5,0x7f5,0x7f5,0x7f5,0x7f5,0,0, -0,0,0,0,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8, -0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x1686,0,0,0, -0,0,0,0,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x8c7,0xd9b,0, -0,0,0,0,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12, -0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0,0,0,0,0,0, -0,0,0,0,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98, -0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98, -0xa98,0x12cf,0x12cf,0,0xafb,0xafb,0xafb,0xa95,0xa95,0xa95,0xa95,0xafb,0xafb,0xa95,0xa95,0xa95, -0,0,0,0,0xa95,0xa95,0xafb,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xafe,0xafe,0xafe, -0,0,0,0,0xa8f,0,0,0,0xa9b,0xa9b,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92, -0xa92,0xa92,0xa92,0xa92,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa, -0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0,0,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0,0,0, -0,0,0,0,0,0,0,0,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4, -0xbc4,0xbc4,0xf18,0xf18,0,0,0,0,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc7,0xbc7,0xbc7, -0xbc4,0xbc4,0xbc7,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0,0, -0,0,0,0,0xbc1,0xbc1,0xbc1,0xbc1,0xbc1,0xbc1,0xbc1,0xbc1,0xbc1,0xbc1,0xf15,0, -0,0,0xbbe,0xbbe,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3, -0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xc2d,0xc2d,0xba0,0xba0,0xc2d, -0,0,0xb9d,0xb9d,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032, -0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0xf45,0x1050,0xf45,0x1050,0x1050,0x1050,0x1050, -0x1050,0x1050,0x1050,0,0x109e,0xf42,0x1050,0xf42,0xf42,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050, -0x1050,0xf45,0xf45,0xf45,0xf45,0xf45,0xf45,0x1050,0x1050,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056, -0x1056,0,0,0x1053,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0,0, -0,0,0,0,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0,0, -0,0,0,0,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf48,0xf4b,0xf4b,0xf4b,0xf4b, -0xf3c,0xf3c,0,0,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6,0x13e6, -0x13e6,0x13e6,0x13e0,0x181e,0x181e,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8, -0x18d2,0x18d2,0x18d2,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b, -0x1a8b,0x1a8b,0,0,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8e, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xc96,0xc96,0xcea,0xced,0xcf9,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8, -0x18cf,0,0x198c,0x198c,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc9f,0xc9f, -0xc8a,0xc8d,0xc9f,0xc9f,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x1161,0x10ef,0x115e,0x115e,0x10ef,0x10ef, -0x10ef,0x115e,0x10ef,0x115e,0x115e,0x115e,0x1164,0x1164,0,0,0,0,0,0,0,0, -0x10ec,0x10ec,0x10ec,0x10ec,0xdec,0xdec,0xdec,0xdec,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9, -0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xde9,0xde9,0xeac,0xea9,0,0,0,0xdef, -0xdef,0xde3,0xde3,0xde3,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0,0, -0,0xdec,0xdec,0xdec,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe16,0xe16, -0xe16,0xe16,0xe16,0xe16,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1980,0x197d,0, -0,0,0,0,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671, -0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0, -0,0x1671,0x1671,0x1671,0x11c7,0x11c7,0x11c7,0x11c7,0x11c7,0x11c7,0x11c7,0x11c7,0,0,0,0, -0,0,0,0,0x107d,0x107a,0x107d,0xfc9,0x107a,0x1080,0x1083,0x1086,0x1089,0x108c,0x108f,0x107a, -0x108c,0x108c,0x107a,0x107a,0x108c,0xfcc,0x1092,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0xfcf,0xfd2,0xfd5, -0xfc6,0x1095,0xfc6,0xfc6,0xfc6,0xfc6,0xfd8,0x120f,0x124e,0x120c,0x120c,0x1608,0x1452,0x1452,0x178b,0, -0,0,0,0,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1c5,0x1c5,0x1c5,0x1c5, -0x1c5,0x1c5,0x1c5,0x1c5,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0,0,0x1c5,0x1c5,0x1c5,0x1c5, -0x1c5,0x1c5,0,0,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0,0x1c5,0,0x1c5, -0,0x1c5,0,0x1c5,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1c5,0x1c5,0x1c5,0x1c5, -0x1c5,0x1c5,0x1c5,0x1c5,0x1bf,0x1ce,0x1bf,0x1ce,0x1bf,0x1ce,0x1bf,0x1ce,0x1bf,0x1ce,0x1bf,0x1ce, -0x1bf,0x1ce,0,0,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1dd,0x1dd,0x1dd,0x1dd, -0x1dd,0x1dd,0x1dd,0x1dd,0x1cb,0x1cb,0x1da,0x1da,0x1da,0,0x1bf,0x1bf,0x1c5,0x1c5,0x1c5,0x1d4, -0x1c5,0x1b6,0x1ce,0x1b6,0x1b6,0x1b3,0x1bf,0x1bf,0x1bf,0,0x1bf,0x1bf,0x1c5,0x1d4,0x1c5,0x1d4, -0x1c5,0x1b3,0x1b3,0x1b3,0x1bf,0x1bf,0x1bf,0x1ce,0,0,0x1bf,0x1bf,0x1c5,0x1c5,0x1c5,0x1d4, -0,0x1b3,0x1b3,0x1b3,0x1bf,0x1bf,0x1bf,0x1ce,0x1bf,0x1bf,0x1bf,0x1bf,0x1c5,0x1c5,0x1c5,0x1d4, -0x1dd,0x1b3,0x1b3,0x1b3,0,0,0x1bf,0x1bf,0x1bf,0,0x1bf,0x1bf,0x1c5,0x1d4,0x1c5,0x1d4, -0x1c5,0x1b9,0x1b6,0,0x94e,0x951,0x951,0x951,0xcfc,9,0x125d,0x125d,0x125d,0x125d,0x1e,0x1e, -0x1e,0x1e,0x1e,0x1e,0x3f,0x9ae,0,0,0x345,0x3f,0x3f,0x3f,0x3f,0x3f,0x57,0x69, -0x57,0x63,0x5d,0x3cc,0x3c,0x342,0x342,0x342,0x342,0x3c,0x3c,0x3c,0x3c,0x3c,0x54,0x66, -0x54,0x60,0x5a,0,0xb91,0xb91,0xb91,0xb91,0xb91,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7, -0x10d7,0,0,0,0x5d0,0x5d3,0x8af,0x8af,0x9fc,0xa02,0xa02,0x9ff,0x9ff,0x9ff,0x9ff,0xc18, -0xcde,0xcde,0xcde,0xcde,0xebe,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x261,0x261,0x261,0x7ce,0xc6f,0xd6e,0xd6e,0xd6e,0xd6e,0xff9,0x1461,0x1461, -0,0,0,0,0x396,0x396,0x396,0x396,0x396,0x396,0x396,0x396,0x396,0x396,0xd2,0xd2, -0xcf,0xcf,0xcf,0xcf,0xb4f,0xb4c,0xb4f,0xb4c,0xb4c,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xee2, -0xedf,0xee2,0xedf,0x103b,0x103e,0x103e,0x119a,0x1197,0,0,0,0,0,0xb55,0xb52,0xb52, -0xb46,0xb43,0xb49,0xb46,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0,0x119d,0,0,0,0, -0,0x119d,0,0,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca, -0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0x11b8,0x11b8,0,0,0,0,0,0,0,0xbcd, -0x10e9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x115b, -0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64, -0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0,0,0,0,0,0,0,0,0, -0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0, -0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0, -0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879, -0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0,0x879,0x879,0x879,0x879,0x87c, -0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879, -0x879,0x879,0x879,0x87c,0,0,0,0,0,0,0,0,0,0,0,0, -0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c, -0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x891,0x891,0x894,0x894,0x891,0x891,0x891,0x891, -0x891,0x891,0x891,0x891,0x196b,0x196b,0x1968,0x1968,0,0x53a,0x534,0x53a,0x534,0x53a,0x534,0x53a, -0x534,0x53a,0x534,0x534,0x537,0x534,0x537,0x534,0x537,0x534,0x537,0x534,0x537,0x534,0x537,0x534, -0x537,0x534,0x537,0x534,0x537,0x534,0x537,0x534,0x534,0x534,0x534,0x53a,0x534,0x53a,0x534,0x53a, -0x534,0x534,0x534,0x534,0x534,0x534,0x53a,0x534,0x534,0x534,0x534,0x534,0x537,0x9e4,0x9e4,0, -0,0x6cf,0x6cf,0x582,0x582,0x53d,0x540,0x9e1,0,0,0,0,0,0x50d,0x50d,0x50d, -0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0x50d, -0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0x50d,0xe4f,0x1611,0x16e9,0,0x52b,0x52b,0x52b, -0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0, -0x58e,0x58e,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a, -0xe55,0xe55,0xe55,0xe55,0x19f8,0x19f8,0,0,0,0,0,0,0,0,0,0x196b, -0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7, -0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522, -0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0x522,0xada,0xada,0, -0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0,0,0, -0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888, -0x888,0x9ed,0x888,0x888,0x888,0x9ed,0x888,0,0,0,0,0,0,0,0,0, -0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba, -0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdfb,0xdfb,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1, -0x1077,0x1077,0xfab,0xfb4,0xfae,0xfae,0xfae,0xfb4,0,0,0,0,0,0,0,0, -0x1872,0x186f,0x1740,0x173d,0x1734,0x173a,0x173a,0x17d0,0x17cd,0x17d0,0x17cd,0x1986,0x1986,0x1983,0x1a5b,0x1a58, -0x1872,0x186f,0x1a55,0x186f,0x1a55,0x186f,0x1872,0x186f,0x1872,0x186f,0x1986,0x1983,0x1986,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x1a5e,0x187b,0x187b,0x187b,0x17d0,0x17cd,0x12b1,0x11b5,0x11b5,0x10d4,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e, -0xbbb,0xbbb,0xbbb,0xbb8,0xbb8,0xc36,0xc36,0xbb8,0xbb5,0xbb5,0xbb5,0xbb5,0x1827,0,0,0, -0xfde,0xfde,0xfde,0xfe1,0xfe1,0xfe1,0xfe4,0xfe4,0xfe7,0xfe4,0,0,0,0,0,0, -0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd, -0xcbd,0xcbd,0xcbd,0xcbd,0xcba,0xcba,0xcc0,0xcc0,0,0,0,0,0,0,0,0, -0xe2e,0xe2e,0xe2e,0xe2e,0xeb5,0x159f,0,0,0,0,0,0,0,0,0xe34,0xe34, -0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0,0,0,0,0,0, -0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf, -0xeaf,0xeaf,0xe25,0xeb2,0,0,0,0,0,0,0,0,0,0,0,0xe22, -0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020, -0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0,0,0, -0x109b,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf27,0xf33,0xf33,0xf24,0xf24,0xf24,0xf24,0,0xfea, -0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0,0,0,0,0xf24,0xf24, -0x13d7,0x13d7,0x13d7,0x13d7,0x13d7,0x13f8,0x12c0,0x13da,0x13da,0x13da,0x13da,0x13da,0x13da,0x13da,0x13da,0x13da, -0x12ba,0x12ba,0x12ba,0x12ba,0x12ba,0x12ba,0x12ba,0x12ba,0x12ba,0x12ba,0x13da,0x13da,0x13da,0x13da,0x13da,0, -0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xe9d,0xdce, -0xdce,0xe9d,0xe9d,0xdce,0xdce,0xe9d,0xe9d,0,0,0,0,0,0,0,0,0, -0xdd1,0xdd1,0xdd1,0xe9d,0xdd1,0xdd1,0xdd1,0xdd1,0xdd1,0xdd1,0xdd1,0xdd1,0xe9d,0xdce,0,0, -0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0,0,0xdc8,0xdd7,0xdd7,0xdd7, -0xfa2,0x1074,0xfa2,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xf9f,0xf9f,0xfa5,0xf99,0xf9c, -0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x11cd,0x1233,0x1233,0x11cd,0x11cd, -0x11d6,0x11d6,0x11d0,0x11d3,0x11d3,0x11cd,0x1254,0,0,0,0,0,0,0,0,0, -0,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0,0,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0, -0,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0,0,0,0,0,0,0,0,0, -0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0, -0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae, -0x147c,0x147c,0x147c,0x147c,0x12ae,0x12a8,0x173d,0x173d,0x17d3,0x17d6,0x17be,0x17be,0,0,0,0, -0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470, -0xf57,0xf57,0xf57,0xf51,0xf51,0x1059,0xf51,0xf51,0x1059,0xf51,0xf51,0xf5a,0xf54,0x105c,0,0, -0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0,0,0,0,0,0, -0x72c,0x72c,0x72c,0x72c,0,0,0,0,0,0,0,0,0,0,0,0, -0xef7,0xef7,0xef7,0xef7,0xef7,0xef7,0xef7,0xef7,0xef7,0xef7,0xef7,0xef7,0xef7,0xef7,0xef7,0xef7, -0xef7,0xef7,0xef7,0,0,0,0,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4, -0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4, -0xef4,0xef4,0xef4,0xef4,0,0,0,0,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0, -0,0,0,0,0,0,0,0,0,0,0,0x14d,0x14d,0x14d,0x14d,0x14d, -0,0,0,0,0,0x7a4,0x615,0x21f,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225, -0x225,0x219,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0, -0x21f,0x21f,0x21f,0x21f,0x21f,0,0x21f,0,0x21f,0x21f,0,0x21f,0x21f,0,0x21f,0x21f, -0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x222,0x132,0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c, -0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a, -0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xbe8,0xbe8,0xbf7,0xbf1,0xbee,0xbfa,0xbfa,0xbf4, -0xbe5,0xbeb,0,0,0,0,0,0,0x4bc,0x4e0,0x4dd,0x4e0,0x4dd,0x9f0,0x9f0,0xad1, -0xacb,0x4bf,0x4bf,0x4bf,0x4bf,0x4f5,0x4f5,0x4f5,0x4e3,0x4e6,0x4fb,0,0x4ec,0x4e9,0x4fe,0x4fe, -0x4d7,0x4cb,0x4b9,0x4cb,0x4b9,0x4cb,0x4b9,0x4c2,0x4c2,0x4ef,0x4ef,0x4f2,0x4ef,0x4ef,0x4ef,0, -0x4ef,0x4d4,0x4d1,0x4c2,0,0,0,0,0x11d,0x135,0x11d,0x990,0x11d,0,0x11d,0x135, -0x11d,0x135,0x11d,0x135,0x11d,0x135,0x11d,0x135,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f, -0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x132, -0x12c,0x132,0x12c,0x132,0x12c,0,0,0x1b,0,0x453,0x432,0x420,0x429,0x426,0x420,0x435, -0x423,0x41d,0x420,0x441,0x438,0x42f,0x450,0x420,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d, -0x44d,0x44d,0x43b,0x43e,0x441,0x441,0x441,0x453,0x402,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff, -0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff, -0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0,0,0,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff, -0,0,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0,0,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff, -0,0,0x3ff,0x3ff,0x3ff,0,0,0,0x426,0x429,0x441,0x444,0x420,0x429,0x429,0, -0x3f9,0x3fc,0x3fc,0x3fc,0x3fc,0x3f9,0x3f9,0,9,9,9,9,9,9,9,9, -9,0x753,0x753,0x753,0x74d,0x336,0x2e5,0x2e5,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e, -0xa9e,0xa9e,0xa9e,0xa9e,0,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e, -0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0,0xa9e,0xa9e,0xa9e,0xa9e, -0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0, -0xa9e,0xa9e,0,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e, -0xa9e,0xa9e,0,0,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e, -0xa9e,0xa9e,0,0,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e, -0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0, -0,0,0,0,0xab6,0xab6,0xabc,0,0,0,0,0xab3,0xab3,0xab3,0xab3,0xab3, -0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3, -0xab3,0xab3,0xab3,0xab3,0,0,0,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9, -0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0x12a5,0x12a5,0x1524,0x1524,0, -0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0x17bb,0,0,0, -0x12a5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05, -0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xe64,0,0, -0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a, -0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0,0,0, -0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07, -0xe07,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1455,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5, -0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0,0,0,0, -0x930,0x930,0x930,0x930,0,0,0,0,0,0,0,0,0,0x15d5,0x15d5,0x15d5, -0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927, -0x927,0x927,0x927,0,0,0,0,0,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7, -0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x12e7,0x1407,0x1407, -0x1407,0x1407,0x1407,0,0,0,0,0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0, -0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0, -0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0,0xaad,0xbd3,0xbd3,0xbd3,0xbd3,0,0,0,0, -0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd0,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0,0, -0,0,0,0,0,0,0,0,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4, -0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4, -0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0,0,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1, -0xaa1,0xaa1,0,0,0,0,0,0,0x157b,0x157b,0x157b,0x157b,0x157b,0x157b,0x157b,0x157b, -0x157b,0x157b,0x157b,0x157b,0x157b,0x157b,0x157b,0x157b,0x157b,0x157b,0x157b,0x157b,0,0,0,0, -0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578, -0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0,0,0,0, -0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0,0,0,0,0,0,0,0, -0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389, -0,0,0,0,0,0,0,0,0,0,0,0x1386,0x18ba,0x18ba,0x18ba,0x18ba, -0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0, -0x18ba,0x18ba,0,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0,0x18b7, -0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0,0x18b7, -0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0,0x18b7,0x18b7,0,0,0,0x19da,0x19da,0x19da,0x19da, -0x19dd,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da, -0,0,0,0,0,0,0,0,0,0,0,0,0x12e4,0x12e4,0x12e4,0x12e4, -0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4, -0x12e4,0x12e4,0x12e4,0,0,0,0,0,0,0,0,0,0x12e4,0x12e4,0x12e4,0x12e4, -0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4, -0x12e4,0x12e4,0,0,0,0,0,0,0,0,0,0,0x12e4,0x12e4,0x12e4,0x12e4, -0x12e4,0x12e4,0x12e4,0x12e4,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x187e,0x1884,0x1884,0x1881, -0x1881,0x1881,0,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881, -0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0,0x1881,0x1881, -0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0,0,0,0,0,0xa8c,0xa8c,0xa8c,0xa8c, -0xa8c,0xa8c,0,0,0xa8c,0,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c, -0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0xa8c,0,0xa8c, -0xa8c,0,0,0,0xa8c,0,0,0xa8c,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63, -0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0,0xf60, -0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338, -0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338, -0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0,0,0,0,0,0,0,0,0x1335, -0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x14cd,0x14cd,0x14cd,0x14cd,0x14cd,0x14cd,0x14cd,0x14cd, -0x14cd,0x14cd,0x14cd,0x14cd,0x14cd,0x14cd,0x14cd,0x14cd,0x14cd,0x14cd,0x14cd,0,0x14cd,0x14cd,0,0, -0,0,0,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9, -0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc3,0xcc3, -0xcc3,0xcc3,0xf39,0xf39,0,0,0,0xcc6,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10, -0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10, -0xe10,0xe10,0,0,0,0,0,0xe0d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d, -0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d, -0x1a6d,0x1a6d,0,0,0,0,0,0,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5, -0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5, -0,0,0,0,0x14a0,0x14a0,0x11e5,0x11e5,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0, -0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0,0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0, -0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0xc12,0xc30,0xc30,0xc30,0,0xc30,0xc30,0, -0,0,0,0,0xc30,0xc30,0xc30,0xc30,0xc12,0xc12,0xc12,0xc12,0,0xc12,0xc12,0xc12, -0,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12, -0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0x16f2,0x16f2,0,0,0xc33,0xc33,0xc33,0, -0,0,0,0xc48,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0x1689,0,0,0, -0,0,0,0,0xbaf,0xbaf,0xbaf,0xbaf,0xbaf,0xbaf,0xbb2,0xbb2,0xbac,0,0,0, -0,0,0,0,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x140a,0x140a,0,0,0,0,0x12f0, -0x12f0,0x12f0,0x12f0,0x12f0,0x12f6,0x12f6,0x13c8,0x12f6,0x12f6,0x12f6,0x12f3,0,0,0,0,0, -0,0,0,0,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c, -0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0,0,0,0xf66,0xf69,0xf69, -0xf69,0xf69,0xf69,0xf69,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a, -0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0,0,0xf87,0xf87,0xf87,0xf87, -0xf87,0xf87,0xf87,0xf87,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84, -0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0,0,0,0,0,0xf81,0xf81,0xf81,0xf81, -0xf81,0xf81,0xf81,0xf81,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0x1302, -0x1302,0x1302,0x1302,0x1302,0x1302,0x1302,0,0,0,0,0,0,0,0x12ff,0x12ff,0x12ff, -0x12ff,0,0,0,0,0,0,0,0,0,0,0,0,0x12fc,0x12fc,0x12fc, -0x12fc,0x12fc,0x12fc,0x12fc,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e, -0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b, -0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0,0,0,0,0,0,0,0x1488,0x1488, -0x1488,0x1488,0x1488,0x1488,0x16cb,0x16cb,0x16ce,0x16ce,0x171c,0x171c,0x171c,0x171c,0,0,0,0, -0,0,0,0,0x16c8,0x16c8,0x16c8,0x16c8,0x16c8,0x16c8,0x16c8,0x16c8,0x16c8,0x16c8,0,0, -0,0,0,0,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0,0,0,0x1a0d,0x1a10,0x1a0a, -0x1a0a,0x1a0a,0x1992,0x19a4,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b, -0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0,0,0,0,0,0,0,0,0x1995,0x1995, +0x846,0xa8c,0xa8c,0xa8c,0x8f1,0x8f1,0x8f1,0x8f1,0x8f1,0x8f1,0x8f1,0x8f1,0x8f1,0x8f1,0x8f1,0x8f1, +0x8f1,0x8f1,0x8f1,0x8f1,0x8ee,0x8ee,0x8ee,0x8ee,0x8ee,0x8ee,0x8ee,0x8ee,0x8ee,0x8ee,0x8ee,0, +0,0xa8c,0xa8c,0xa8c,0xb43,0xb46,0xb46,0xb43,0xb43,0xb43,0xb46,0xb43,0xb43,0xb43,0xb43,0xb43, +0xb43,0xb43,0xb43,0xb43,0xb46,0xb43,0xb46,0xb46,0xb43,0xb43,0xb46,0xb46,0xb46,0xb43,0xb46,0xb43, +0xb43,0xb43,0xd53,0xd53,0xd53,0xd53,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50, +0xd50,0xd50,0xd4d,0xd4d,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f, +0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f, +0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x8f4, +0x8f4,0x8f4,0x8f4,0x8f4,0x8f4,0x9ba,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb7,0xcb7, +0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7, +0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcb7,0xcba,0xcba,0xcba,0xd02, +0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xcbd,0xcbd,0xcae,0xcae,0xcb1,0xcc3,0xcc0,0, +0,0x171c,0x16a4,0x16a4,0x107d,0x107d,0x107d,0x107d,0xfa5,0x107d,0x107d,0x107d,0xfa5,0x107d,0x107d,0x107d, +0x107d,0x107a,0,0,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xf9f,0xfa8,0xfa2,0xfa8,0xfa2,0xfa2, +0xfa2,0xfa8,0xfa8,0,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f, +0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x117f,0x117f,0x117f, +0,0,0x111c,0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0, +0,0,0,0,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872, +0x1872,0x1872,0x1872,0x1872,0x186c,0x1875,0x1875,0x1875,0x1875,0x1875,0x186f,0x1a6a,0x187e,0x187e,0,0, +0,0,0,0x1a1f,0x18f3,0x18f3,0x18f3,0x18f3,0x18f3,0x18f3,0x18f3,0x18f3,0x12b1,0x5f4,0x15f,0x15f, +0,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x168,0,0,0x16b,0x16b,0,0,0x16b, +0x16b,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0,0x5b5,0x5b5, +0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0,0x5b5,0,0,0,0x5b5,0x5b5,0x5b5,0x5b5,0,0, +0x5f7,0xa4a,0x5f4,0x15f,0x15f,0x5f4,0x5f4,0x5f4,0x5f4,0,0,0x15f,0x15f,0,0,0x162, +0x162,0x6de,0xb4c,0,0,0,0,0,0,0,0,0x5f1,0,0,0,0, +0x5b2,0x5b2,0,0x5b2,0x165,0x165,0x5ee,0x5ee,0,0,0x321,0x321,0x321,0x321,0x321,0x321, +0x321,0x321,0x321,0x321,0x5b5,0x5b5,0x15c,0x15c,0x159,0x159,0x159,0x159,0x159,0x15c,0x159,0xeee, +0x15ea,0x15e7,0x1713,0,0,0xafe,0x60f,0xa74,0,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0, +0,0,0,0x1fe,0x1fe,0,0,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe, +0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0,0x1fe,0x1fb, +0,0x1fe,0x1fb,0,0x1fe,0x1fe,0,0,0x612,0,0x1f2,0x1f2,0x1f2,0x60f,0x60f,0, +0,0,0,0x60f,0x60f,0,0,0x60f,0x60f,0x618,0,0,0,0xe97,0,0, +0,0,0,0,0,0x1fb,0x1fb,0x1fb,0x1fe,0,0x1fb,0,0,0,0,0, +0,0,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x60f,0x615,0x1f8,0x1f8, +0x1f5,0xe97,0x168c,0,0,0,0,0,0,0,0,0,0,0x606,0x609,0x1e6, +0,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0xa71,0x1ef,0,0x1ef,0x1ef,0x1ef,0,0x1ef, +0x1ef,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0,0x5c4,0x5c4, +0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0,0x5c4,0x5c4,0,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0,0, +0x60c,0x1e9,0x1e6,0x1e6,0x1e6,0x609,0x609,0x609,0x609,0x609,0,0x609,0x609,0x1e6,0,0x1e6, +0x1e6,0x6e4,0,0,0x1ec,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1e9,0xa6e,0xafb,0xafb,0,0,0x327,0x327,0x327,0x327,0x327,0x327, +0x327,0x327,0x327,0x327,0x11b8,0xa6b,0,0,0,0,0,0,0,0x14fd,0x163e,0x1644, +0x163e,0x1641,0x1641,0x1641,0,0x639,0x2a6,0x2a6,0,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2, +0x2af,0,0,0x2b2,0x2b2,0,0,0x2b2,0x2b2,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd, +0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0,0x5cd,0x5cd, +0,0xae9,0x5cd,0x5cd,0x5cd,0x5cd,0,0,0x63c,0x2ac,0x639,0x639,0x2a6,0x639,0x639,0x639, +0xea9,0,0,0x2a6,0x2a9,0,0,0x2a9,0x2a9,0x6ea,0,0,0,0,0,0x1b4e, +0x1b51,0x1839,0x639,0x636,0,0,0,0,0x5ca,0x5ca,0,0x5cd,0x2ac,0x2ac,0xea9,0xea9, +0,0,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a0,0xaec,0x10f2,0x10f2, +0x10f2,0x10f2,0x10f2,0x10f2,0,0,0,0,0,0,0,0,0,0,0x63f,0x32a, +0,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0,0,0,0x2bb,0x2bb,0x2bb,0,0x2bb,0x2bb, +0x2be,0x2bb,0,0,0,0x2bb,0x2bb,0,0x2bb,0,0x2bb,0x2bb,0,0,0,0x2bb, +0x2bb,0,0,0,0x2bb,0x2bb,0x2bb,0,0,0,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb, +0x2bb,0x2bb,0xba3,0x2bb,0x2bb,0x2bb,0,0,0,0,0x645,0x2b5,0x645,0x2b5,0x2b5,0, +0,0,0x2b5,0x2b5,0x2b5,0,0x2b8,0x2b8,0x2b8,0x648,0,0,0xdbf,0,0,0, +0,0,0,0x642,0,0,0,0,0,0,0,0,0,0,0xbee,0x330, +0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x330,0x32d,0x32d,0x32d,0xac8,0xa8f,0xa8f,0xa8f,0xa8f, +0xa8f,0xa92,0xa8f,0,0,0,0,0,0x1416,0x2c4,0x2c7,0x2c7,0x1719,0x2d0,0x2d0,0x2d0, +0x2d0,0x2d0,0x2d0,0x2d0,0x2cd,0,0x2d0,0x2d0,0x2d0,0,0x2d0,0x2d0,0x2d0,0x5d3,0x5d3,0x5d3, +0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3, +0x5d3,0x5d0,0x5d3,0x5d3,0x13f5,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0,0,0x18f9,0xdc5,0x64e,0x64e, +0x64e,0x2c7,0x2c7,0x2c7,0x2c7,0,0x64e,0x64e,0x651,0,0x64e,0x64e,0x64e,0x6ed,0,0, +0,0,0,0,0,0x64b,0x64b,0,0xe6a,0xe6a,0x1500,0,0x1a7c,0x189f,0,0, +0x2ca,0x2ca,0xeac,0xeac,0,0,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1, +0,0,0,0,0,0,0,0x1764,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2, +0x153f,0x140a,0x22e,0x22e,0x1692,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x231,0,0x234,0x234, +0x234,0,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234, +0x234,0,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x231,0x234,0x234,0,0x234,0x234,0x234, +0x234,0x234,0,0,0xb01,0xa77,0x22e,0x624,0x627,0x22e,0x624,0x22e,0x22b,0,0x624,0x627, +0x627,0,0x627,0x627,0x624,0x62a,0,0,0,0,0,0,0,0x621,0x621,0, +0,0,0,0,0x1a6d,0x1884,0x231,0,0x231,0x231,0xcf3,0xcf3,0,0,0x333,0x333, +0x333,0x333,0x333,0x333,0x333,0x333,0x333,0x333,0,0xc78,0xc78,0x1920,0,0,0,0, +0,0,0,0,0,0,0,0,0x1647,0x140d,0x291,0x291,0x17f1,0x29d,0x29d,0x29d, +0x29d,0x29d,0x29d,0x29d,0x29a,0,0x29d,0x29d,0x29d,0,0x29d,0x29d,0x29d,0x5c7,0x5c7,0x5c7, +0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x291,0x633,0x633,0x633,0xe9a,0,0x291,0x291, +0x291,0,0x294,0x294,0x28e,0x6e7,0x10ef,0x1545,0,0,0,0,0x1548,0x1548,0x1548,0x633, +0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x149d,0x297,0x297,0xe9a,0xe9a,0,0,0x28b,0x28b, +0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0xd9b,0xd9b,0xd9b,0xd9b,0xd9b,0xd9b,0x1545,0x1545, +0x1545,0xd9e,0xda4,0xda4,0xda4,0xda4,0xda4,0xda4,0,0x183c,0x82e,0x82e,0,0x83d,0x83d,0x83d, +0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x837,0x83a,0x83a,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0, +0,0,0x83d,0x83d,0x83d,0x83d,0x834,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d, +0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0,0x83d,0x83d,0x83d,0x83d,0x83d, +0x83d,0x83d,0x83d,0x83d,0,0x83d,0,0,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0, +0,0,0x8e8,0,0,0,0,0x8e5,0x82e,0x82e,0x8e5,0x8e5,0x8e5,0,0x8e5,0, +0x82e,0x82e,0x831,0x82e,0x831,0x831,0x831,0x8e2,0,0,0,0,0,0,0x12e4,0x12e4, +0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0,0,0x82e,0x82b,0x828,0,0,0, +0,0,0,0,0,0,0,0,0,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df, +0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df, +0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x2df,0x654,0x2df,0x2dc,0x654,0x654,0x654,0x654, +0x654,0x654,0x65d,0,0,0,0,0x2a,0x2e5,0x2e5,0x2e5,0x2e5,0x2e5,0x2df,0x2e2,0x65a, +0x65a,0x65a,0x65a,0x65a,0x65a,0x654,0x657,0x2d3,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9, +0x2d9,0x2d9,0x2d6,0x2d6,0,0,0,0,0,0x243,0x243,0,0x243,0,0x1749,0x243, +0x243,0x1749,0x243,0,0x1749,0x243,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x243,0x243,0x243,0x243, +0x1749,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x1749,0x243,0x243,0x243,0,0x243,0,0x243, +0x1749,0x1749,0x243,0x243,0x1749,0x243,0x243,0x23d,0x243,0x62d,0x243,0x23a,0x62d,0x62d,0x62d,0x62d, +0x62d,0x62d,0x17be,0x62d,0x62d,0x243,0,0,0x249,0x249,0x249,0x249,0x249,0,0x246,0, +0x630,0x630,0x630,0x630,0x630,0x62d,0x1965,0,0x237,0x237,0x237,0x237,0x237,0x237,0x237,0x237, +0x237,0x237,0,0,0x240,0x240,0x11bb,0x11bb,0x726,0x726,0x726,0x723,0x726,0x726,0x726,0x726, +0,0x726,0x726,0x726,0x726,0x723,0x726,0x726,0x726,0x726,0x723,0x726,0x726,0x726,0x726,0x723, +0x726,0x726,0x726,0x726,0x723,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726, +0x726,0x723,0x858,0xdd1,0xdd1,0,0,0,0,0x741,0x741,0x73e,0x741,0x73e,0x73e,0x753, +0x73e,0x753,0x741,0x741,0x741,0x741,0x741,0x717,0x741,0x73e,0x74d,0x74d,0x750,0x6f9,0x744,0x744, +0x71d,0x71d,0x71d,0x71d,0x10f8,0x116a,0x116a,0x116a,0x741,0x741,0x741,0x73e,0x741,0x741,0x8fa,0x741, +0,0x741,0x741,0x741,0x741,0x73e,0x741,0x741,0x741,0x741,0x73e,0x741,0x741,0x741,0x741,0x73e, +0x741,0x741,0x741,0x741,0x73e,0x741,0x8f7,0x8f7,0x8f7,0x741,0x741,0x741,0x741,0x741,0x741,0x741, +0x8fa,0x73e,0x8fa,0x8fa,0x8fa,0,0x855,0x855,0x852,0x852,0x852,0x852,0x852,0x852,0x8fd,0x852, +0x852,0x852,0x852,0x852,0x852,0,0xdc8,0x852,0xba6,0xba6,0xdcb,0xdce,0xdc8,0xed9,0xed9,0xed9, +0xed9,0x10f5,0x10f5,0,0,0,0,0,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0,0x11b5, +0,0,0,0,0,0x11b5,0,0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0, +0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0xb73, +0x7a1,0,0x7a1,0x7a1,0x7a1,0x7a1,0,0,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0, +0x7a1,0,0x7a1,0x7a1,0x7a1,0x7a1,0,0,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0xb70, +0x7a1,0,0x7a1,0x7a1,0x7a1,0x7a1,0,0,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1, +0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0xb70,0x7a1,0,0x7a1,0x7a1, +0x7a1,0x7a1,0,0,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0,0x7a1,0,0x7a1,0x7a1, +0x7a1,0x7a1,0,0,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0xb73,0x7a1,0x7a1,0x7a1,0x7a1, +0x7a1,0x7a1,0x7a1,0,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1, +0x7a1,0x7a1,0x7a1,0xb70,0x7a1,0,0x7a1,0x7a1,0x7a1,0x7a1,0,0,0x7a1,0x7a1,0x7a1,0x7a1, +0x7a1,0x7a1,0x7a1,0xb70,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1, +0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x79e,0,0,0x1167,0x1167,0xc2d,0xb6d,0x798,0x7a4,0x795, +0x795,0x795,0x795,0x7a4,0x7a4,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x792,0x792, +0x792,0x792,0x792,0x792,0x792,0x792,0x792,0x792,0x792,0,0,0,0xb70,0xb70,0xb70,0xb70, +0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb6d,0xb6d,0xb6d,0xb6d, +0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0,0,0,0,0,0,0x783,0x783,0x783,0x783, +0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783, +0x783,0x148b,0,0,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0,0,0x81f,0x822,0x822,0x822, +0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822, +0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x81c,0x819,0,0,0,0x825,0x825,0x825,0x825, +0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x86a,0x86a,0x86a,0x825,0x825,0x825,0x12de,0x12de,0x12de, +0x12de,0x12de,0x12de,0x12de,0x12de,0,0,0,0,0,0,0,0x9bd,0x9bd,0x9bd,0x9bd, +0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x18a5,0x9bd,0x9bd,0x9bd,0x9bd,0xa0e,0xa0e, +0xa11,0x18fc,0,0,0,0,0,0,0,0,0,0x18a5,0x9c0,0x9c0,0x9c0,0x9c0, +0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0xa14,0xa14, +0xa17,0x9c9,0x9c9,0,0,0,0,0,0,0,0,0,0x9c3,0x9c3,0x9c3,0x9c3, +0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0xa1a,0xa1a, +0,0,0,0,0,0,0,0,0,0,0,0,0x9c6,0x9c6,0x9c6,0x9c6, +0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0,0x9c6,0x9c6,0x9c6,0,0xa1d,0xa1d, +0,0,0,0,0,0,0,0,0,0,0,0,0x7c2,0x7c2,0x7c2,0x7c2, +0x7c2,0x7c2,0x8be,0x7c2,0x7c2,0x8ca,0x8ca,0x8ca,0x8ca,0x8ca,0x8c4,0x8c4,0x8ca,0x8c7,0x90c,0x8c1, +0x7cb,0x7cb,0x7bc,0x7c8,0x7b6,0x7b0,0x7b9,0x7b3,0x7c5,0xb04,0,0,0x7bf,0x7bf,0x7bf,0x7bf, +0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0,0,0,0,0,0,0xa7a,0xa7a,0xa7a,0xa7a, +0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0,0,0,0,0,0,0x7ef,0x7ef,0x870,0x873, +0x7f5,0x86d,0x7f2,0x7ef,0x7f8,0x807,0x7fb,0x8d6,0x8d6,0x8d6,0x7ec,0x18f6,0x7fe,0x7fe,0x7fe,0x7fe, +0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0,0,0,0,0,0,0x801,0x801,0x801,0x801, +0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801, +0x801,0x801,0x801,0x801,0x169e,0,0,0,0,0,0,0,0x801,0x801,0x801,0x801, +0x801,0x801,0x801,0x801,0x801,0x8d0,0xda7,0,0,0,0,0,0xf24,0xf24,0xf24,0xf24, +0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24, +0xf24,0xf24,0,0,0,0,0,0,0,0,0,0,0xaa1,0xaa1,0xaa1,0xaa1, +0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1, +0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0x12e7,0x12e7,0,0xb07,0xb07,0xb07,0xa9e, +0xa9e,0xa9e,0xa9e,0xb07,0xb07,0xa9e,0xa9e,0xa9e,0,0,0,0,0xa9e,0xa9e,0xb07,0xa9e, +0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xb0a,0xb0a,0xb0a,0,0,0,0,0xa98,0,0,0, +0xaa4,0xaa4,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xab3,0xab3,0xab3,0xab3, +0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0,0, +0xab3,0xab3,0xab3,0xab3,0xab3,0,0,0,0,0,0,0,0,0,0,0, +0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xf2a,0xf2a,0,0,0,0, +0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd3,0xbd3,0xbd3,0xbd0,0xbd0,0xbd3,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0, +0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0,0,0,0,0,0,0xbcd,0xbcd,0xbcd,0xbcd, +0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xf27,0,0,0,0xbca,0xbca,0xbaf,0xbaf,0xbaf,0xbaf, +0xbaf,0xbaf,0xbaf,0xbaf,0xbaf,0xbaf,0xbaf,0xbaf,0xbaf,0xbaf,0xbaf,0xbaf,0xbaf,0xbaf,0xbaf,0xbaf, +0xbaf,0xbaf,0xbaf,0xc39,0xc39,0xbac,0xbac,0xc39,0,0,0xba9,0xba9,0x1044,0x1044,0x1044,0x1044, +0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044, +0x1044,0xf57,0x1062,0xf57,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0,0x10b0,0xf54,0x1062,0xf54, +0xf54,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0xf57,0xf57,0xf57,0xf57,0xf57,0xf57,0x1062, +0x1062,0x1068,0x1068,0x1068,0x1068,0x1068,0x1068,0x1068,0x1068,0,0,0x1065,0xf51,0xf51,0xf51,0xf51, +0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0,0,0,0,0,0,0xf51,0xf51,0xf51,0xf51, +0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0,0,0,0,0,0,0xf4e,0xf4e,0xf4e,0xf4e, +0xf4e,0xf4e,0xf4e,0xf5a,0xf5d,0xf5d,0xf5d,0xf5d,0xf4e,0xf4e,0,0,0x13fe,0x13fe,0x13fe,0x13fe, +0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13f8,0x1836,0x1aa6,0x1aa6,0x1aa6,0x1aa6, +0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa9,0x1b39,0x1b39,0x1b39,0x1b39,0x1b39,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xca2,0xca2,0xcf6,0xcf9, +0xd05,0xce4,0xce4,0xce4,0xce4,0xce4,0xce4,0xce4,0x18e7,0,0x19a4,0x19a4,0xc9c,0xc9c,0xc9c,0xc9c, +0xc9c,0xc9c,0xc9c,0xc9c,0xc9c,0xc9c,0xcab,0xcab,0xc96,0xc99,0xcab,0xcab,0x1104,0x1104,0x1104,0x1104, +0x1104,0x1104,0x1173,0x1101,0x1170,0x1170,0x1101,0x1101,0x1101,0x1170,0x1101,0x1170,0x1170,0x1170,0x1176,0x1176, +0,0,0,0,0,0,0,0,0x10fe,0x10fe,0x10fe,0x10fe,0xdf8,0xdf8,0xdf8,0xdf8, +0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8, +0xdf5,0xdf5,0xebe,0xebb,0,0,0,0xdfb,0xdfb,0xdef,0xdef,0xdef,0xdf2,0xdf2,0xdf2,0xdf2, +0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0,0,0,0xdf8,0xdf8,0xdf8,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0x1539,0x1539,0x1539,0x1539, +0x1539,0x1539,0x1539,0x1539,0x1539,0x1998,0x1995,0,0,0,0,0,0x1689,0x1689,0x1689,0x1689, +0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689, +0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0,0,0x1689,0x1689,0x1689,0x11d9,0x11d9,0x11d9,0x11d9, +0x11d9,0x11d9,0x11d9,0x11d9,0,0,0,0,0,0,0,0,0x108f,0x108c,0x108f,0xfdb, +0x108c,0x1092,0x1095,0x1098,0x109b,0x109e,0x10a1,0x108c,0x109e,0x109e,0x108c,0x108c,0x109e,0xfde,0x10a4,0x108c, +0x108c,0x108c,0x108c,0x108c,0x108c,0xfe1,0xfe4,0xfe7,0xfd8,0x10a7,0xfd8,0xfd8,0xfd8,0xfd8,0xfea,0x121e, +0x1263,0x126f,0x126f,0x161d,0x146a,0x146a,0x17a3,0,0,0,0,0,0x1bf,0x1bf,0x1bf,0x1bf, +0x1bf,0x1bf,0x1bf,0x1bf,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1bf,0x1bf,0x1bf,0x1bf, +0x1bf,0x1bf,0,0,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0,0,0x1bf,0x1bf,0x1bf,0x1bf, +0x1bf,0x1bf,0x1bf,0x1bf,0,0x1c5,0,0x1c5,0,0x1c5,0,0x1c5,0x1bf,0x1bf,0x1bf,0x1bf, +0x1bf,0x1bf,0x1bf,0x1bf,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1bf,0x1ce,0x1bf,0x1ce, +0x1bf,0x1ce,0x1bf,0x1ce,0x1bf,0x1ce,0x1bf,0x1ce,0x1bf,0x1ce,0,0,0x1da,0x1da,0x1da,0x1da, +0x1da,0x1da,0x1da,0x1da,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1cb,0x1cb,0x1da,0x1da, +0x1da,0,0x1bf,0x1bf,0x1c5,0x1c5,0x1c5,0x1d4,0x1c5,0x1b6,0x1ce,0x1b6,0x1b6,0x1b3,0x1bf,0x1bf, +0x1bf,0,0x1bf,0x1bf,0x1c5,0x1d4,0x1c5,0x1d4,0x1c5,0x1b3,0x1b3,0x1b3,0x1bf,0x1bf,0x1bf,0x1ce, +0,0,0x1bf,0x1bf,0x1c5,0x1c5,0x1c5,0x1d4,0,0x1b3,0x1b3,0x1b3,0x1bf,0x1bf,0x1bf,0x1ce, +0x1bf,0x1bf,0x1bf,0x1bf,0x1c5,0x1c5,0x1c5,0x1d4,0x1dd,0x1b3,0x1b3,0x1b3,0,0,0x1bf,0x1bf, +0x1bf,0,0x1bf,0x1bf,0x1c5,0x1d4,0x1c5,0x1d4,0x1c5,0x1b9,0x1b6,0,0x957,0x95a,0x95a,0x95a, +0xd08,9,0x1275,0x1275,0x1275,0x1275,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x3f,0x9b7,0,0, +0x34b,0x3f,0x3f,0x3f,0x3f,0x3f,0x57,0x69,0x57,0x63,0x5d,0x3d2,0x5d6,0x5d9,0x8b8,0x8b8, +0xa05,0xa0b,0xa0b,0xa08,0xa08,0xa08,0xa08,0xc24,0xcea,0xcea,0xcea,0xcea,0xed0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x261,0x261,0x261,0x7d7, +0xc7b,0xd7a,0xd7a,0xd7a,0xd7a,0x100b,0x1479,0x1479,0,0,0,0,0x39c,0x39c,0x39c,0x39c, +0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0xd2,0xd2,0xcf,0xcf,0xcf,0xcf,0xb5b,0xb58,0xb5b,0xb58, +0xb58,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xef4,0xef1,0xef4,0xef1,0x104d,0x1050,0x1050,0x11ac,0x11a9, +0,0,0,0,0,0xb61,0xb5e,0xb5e,0xb52,0xb4f,0xb55,0xb52,0xb76,0xb76,0xb76,0xb76, +0xb76,0xb76,0,0x11af,0,0,0,0,0,0x11af,0,0,0xbd6,0xbd6,0xbd6,0xbd6, +0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0x11ca,0x11ca, +0,0,0,0,0,0,0,0xbd9,0x10fb,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x116d,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70, +0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0, +0,0,0,0,0,0,0,0,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0, +0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0, +0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, +0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, +0x882,0x882,0,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, +0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0,0,0,0, +0,0,0,0,0,0,0,0,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885, +0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9, -0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0xed9,0, -0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0,0x1836,0x1836,0x1800,0,0, -0x1803,0x1803,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x197a,0x197a,0x197a,0x1a49,0x1a49,0x1a4c,0,0,0,0,0,0,0,0, -0x1a43,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0,0,0,0,0,0,0, +0x89a,0x89a,0x89d,0x89d,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x89a,0x1983,0x1983,0x1980,0x1980, +0,0x540,0x53a,0x540,0x53a,0x540,0x53a,0x540,0x53a,0x540,0x53a,0x53a,0x53d,0x53a,0x53d,0x53a, +0x53d,0x53a,0x53d,0x53a,0x53d,0x53a,0x53d,0x53a,0x53d,0x53a,0x53d,0x53a,0x53d,0x53a,0x53d,0x53a, +0x53a,0x53a,0x53a,0x540,0x53a,0x540,0x53a,0x540,0x53a,0x53a,0x53a,0x53a,0x53a,0x53a,0x540,0x53a, +0x53a,0x53a,0x53a,0x53a,0x53d,0x9ed,0x9ed,0,0,0x6d8,0x6d8,0x588,0x588,0x543,0x546,0x9ea, +0,0,0,0,0,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513, +0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513, +0x513,0xe5b,0x1626,0x1701,0,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0,0x594,0x594,0x5a0,0x5a0,0x5a0,0x5a0,0x5a0,0x5a0, +0x5a0,0x5a0,0x5a0,0x5a0,0x5a0,0x5a0,0x5a0,0x5a0,0xe61,0xe61,0xe61,0xe61,0x1a10,0x1a10,0,0, +0,0,0,0,0,0,0,0x1983,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0, +0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528, +0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528, +0x528,0x528,0x528,0x528,0x528,0xae3,0xae3,0,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894, +0x894,0x894,0x894,0x894,0x894,0,0,0,0x891,0x891,0x891,0x891,0x891,0x891,0x891,0x891, +0x891,0x891,0x891,0x891,0x891,0x891,0x891,0x891,0x891,0x9f6,0x891,0x891,0x891,0x9f6,0x891,0, +0,0,0,0,0,0,0,0,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc, +0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xe01,0xe01,0xe01,0xe01,0xe01,0xe01,0xe01,0xe01, +0xe01,0xe01,0xe07,0xe07,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3, +0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0x1089,0x1089,0xfbd,0xfc6,0xfc0,0xfc0,0xfc0,0xfc6, +0,0,0,0,0,0,0,0,0x188a,0x1887,0x1758,0x1755,0x174c,0x1752,0x1752,0x17e8, +0x17e5,0x17e8,0x17e5,0x199e,0x199e,0x199b,0x1a76,0x1a73,0x188a,0x1887,0x1a70,0x1887,0x1a70,0x1887,0x188a,0x1887, +0x188a,0x1887,0x199e,0x199b,0x199e,0x1aee,0,0,0,0,0x1adf,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0x1a79,0x1893,0x1893,0x1893,0x17e8,0x17e5,0x12c9, +0x11c7,0x11c7,0x10e6,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xbc7,0xbc7,0xbc7,0xbc4,0xbc4,0xc42,0xc42,0xbc4, +0xbc1,0xbc1,0xbc1,0xbc1,0x183f,0,0,0,0xff0,0xff0,0xff0,0xff3,0xff3,0xff3,0xff6,0xff6, +0xff9,0xff6,0,0,0,0,0,0,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9, +0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc6,0xcc6,0xccc,0xccc, +0,0,0,0,0,0,0,0,0xe3a,0xe3a,0xe3a,0xe3a,0xec7,0x15b7,0,0, +0,0,0,0,0,0,0xe40,0xe40,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37, +0xe37,0xe37,0,0,0,0,0,0,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xec1, +0xec1,0xec1,0xec1,0xec1,0xec1,0xec1,0xec1,0xec1,0xec1,0xec1,0xe31,0xec4,0,0,0,0, +0,0,0,0,0,0,0,0xe2e,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032, +0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032, +0x1032,0x1032,0x1032,0x1032,0x1032,0,0,0,0x10ad,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf39, +0xf45,0xf45,0xf36,0xf36,0xf36,0xf36,0,0xffc,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c, +0xf3c,0xf3c,0,0,0,0,0xf36,0xf36,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x1410,0x12d8,0x13f2, +0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x12d2,0x12d2,0x12d2,0x12d2,0x12d2,0x12d2,0x12d2,0x12d2, +0x12d2,0x12d2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0, +0xde0,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xeaf,0xdda,0xdda,0xeaf,0xeaf,0xdda,0xdda,0xeaf,0xeaf,0, +0,0,0,0,0,0,0,0,0xddd,0xddd,0xddd,0xeaf,0xddd,0xddd,0xddd,0xddd, +0xddd,0xddd,0xddd,0xddd,0xeaf,0xdda,0,0,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7, +0xdd7,0xdd7,0,0,0xdd4,0xde3,0xde3,0xde3,0xfb4,0x1086,0xfb4,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0x1a94,0x1a91,0x1a04,0x1947,0x1947,0x1947,0x16da,0x16da,0x16da,0x16da, -0x16da,0x16da,0x16da,0x16dd,0,0,0,0,0,0,0,0,0x16d4,0x16d4,0x16d4,0x16d4, -0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x171f,0x171f, -0x171f,0x171f,0x171f,0x171f,0x171f,0x171f,0x171f,0x171f,0x171f,0x16d1,0x16d1,0x16d1,0x16d1,0x16d7,0x16d7,0x16d7, -0x16d7,0x16d7,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8, -0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18f0,0x18f0,0x18f0,0x18f0,0x18ab,0x18ab,0x18ab,0x18ab,0,0, +0,0,0,0xfb1,0xfb1,0xfb7,0xfab,0xfae,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d, +0x122d,0x122d,0x122d,0x11df,0x1248,0x1248,0x11df,0x11df,0x11e8,0x11e8,0x11e2,0x11e5,0x11e5,0x11df,0x1269,0, +0,0,0,0,0,0,0,0,0,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0, +0,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0,0,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0, +0,0,0,0,0,0,0,0,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0, +0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6, +0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x1494,0x1494,0x1494,0x1494,0x12c6,0x12c0,0x1755,0x1755, +0x17eb,0x17ee,0x17d6,0x17d6,0x1ae5,0x1ae5,0,0,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488, +0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0xf69,0xf69,0xf69,0xf63,0xf63,0x106b,0xf63,0xf63, +0x106b,0xf63,0xf63,0xf6c,0xf66,0x106e,0,0,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60, +0xf60,0xf60,0,0,0,0,0,0,0x735,0x735,0x735,0x735,0,0,0,0, +0,0,0,0,0,0,0,0,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09, +0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0,0,0,0,0xf06, +0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06, +0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0,0,0,0, +0x273,0x273,0x273,0x273,0x273,0x273,0x273,0,0,0,0,0,0,0,0,0, +0,0,0,0x14d,0x14d,0x14d,0x14d,0x14d,0,0,0,0,0,0x7ad,0x61b,0x21f, +0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x219,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f, +0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0,0x21f,0x21f,0x21f,0x21f,0x21f,0,0x21f,0, +0x21f,0x21f,0,0x21f,0x21f,0,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x222, +0x132,0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c, +0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23, +0xbf4,0xbf4,0xc03,0xbfd,0xbfa,0xc06,0xc06,0xc00,0xbf1,0xbf7,0,0,0,0,0,0, +0x4c2,0x4e6,0x4e3,0x4e6,0x4e3,0x9f9,0x9f9,0xada,0xad4,0x4c5,0x4c5,0x4c5,0x4c5,0x4fb,0x4fb,0x4fb, +0x4ec,0x4e9,0x501,0,0x4f2,0x4ef,0x504,0x504,0x4dd,0x4d1,0x4bf,0x4d1,0x4bf,0x4d1,0x4bf,0x4c8, +0x4c8,0x4f5,0x4f5,0x4f8,0x4f5,0x4f5,0x4f5,0,0x4f5,0x4da,0x4d7,0x4c8,0,0,0,0, +0x11d,0x135,0x11d,0x999,0x11d,0,0x11d,0x135,0x11d,0x135,0x11d,0x135,0x11d,0x135,0x11d,0x135, +0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x132, +0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0,0,0x1b, +0,0x459,0x438,0x426,0x42f,0x42c,0x426,0x43b,0x429,0x423,0x426,0x447,0x43e,0x435,0x456,0x426, +0x453,0x453,0x453,0x453,0x453,0x453,0x453,0x453,0x453,0x453,0x441,0x444,0x447,0x447,0x447,0x459, +0x408,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405, +0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0, +0,0,0x405,0x405,0x405,0x405,0x405,0x405,0,0,0x405,0x405,0x405,0x405,0x405,0x405, +0,0,0x405,0x405,0x405,0x405,0x405,0x405,0,0,0x405,0x405,0x405,0,0,0, +0x42c,0x42f,0x447,0x44a,0x426,0x42f,0x42f,0,0x3ff,0x402,0x402,0x402,0x402,0x3ff,0x3ff,0, +9,9,9,9,9,9,9,9,9,0x75c,0x75c,0x75c,0x756,0x33c,0x2e8,0x2e8, +0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0,0xaa7,0xaa7,0xaa7, +0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7, +0xaa7,0xaa7,0xaa7,0,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7, +0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0,0xaa7,0xaa7,0,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7, +0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0,0,0xaa7,0xaa7,0xaa7,0xaa7, +0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0,0,0xaa7,0xaa7,0xaa7,0xaa7, +0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7, +0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0,0,0,0,0,0xabf,0xabf,0xac5,0, +0,0,0,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc, +0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0,0,0,0xac2, +0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f, +0xb7f,0xb7f,0xb7f,0x12bd,0x12bd,0x153c,0x153c,0,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b, +0xd0b,0xd0b,0xd0b,0xd0b,0x17d3,0,0,0,0x12bd,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb, -0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0,0,0,0, +0,0,0,0,0,0,0,0,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11, +0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11, +0xd11,0xd11,0xd11,0xd11,0xd11,0xe73,0,0,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16, +0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16, +0xe16,0xe16,0xe16,0xe16,0xe16,0,0,0,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13, +0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x146d,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd, +0x13dd,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd,0x13dd, +0x13dd,0x13dd,0x13dd,0x13dd,0,0,0,0,0x939,0x939,0x939,0x939,0,0,0,0, +0,0,0,0,0,0x15ed,0x15ed,0x15ed,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930, +0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0,0,0,0,0, +0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff, +0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x141f,0x141f,0x141f,0x141f,0x141f,0,0,0,0,0, +0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9, +0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0,0xab6, +0xbdf,0xbdf,0xbdf,0xbdf,0,0,0,0,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf, +0xbdc,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0,0,0,0,0,0,0,0,0,0, +0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad, +0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0xaad,0,0, +0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0xaaa,0,0,0,0,0,0, +0x1593,0x1593,0x1593,0x1593,0x1593,0x1593,0x1593,0x1593,0x1593,0x1593,0x1593,0x1593,0x1593,0x1593,0x1593,0x1593, +0x1593,0x1593,0x1593,0x1593,0,0,0,0,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590, +0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590, +0x1590,0x1590,0x1590,0x1590,0,0,0,0,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c, +0,0,0,0,0,0,0,0,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1, +0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0,0,0,0,0,0,0,0, +0,0,0,0x139e,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0, +0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0,0x18d2,0x18d2,0,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf, +0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf, +0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0,0x18cf, +0x18cf,0,0,0,0x19f2,0x19f2,0x19f2,0x19f2,0x19f5,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2, +0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0,0,0,0,0,0,0,0, +0,0,0,0,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc, +0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0,0,0,0,0, +0,0,0,0,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc, +0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0,0,0,0,0,0, +0,0,0,0,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a, -0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0,0,0,0,0,0,0,0,0, -0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x116a,0x1107,0x1107,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0,0, -0,0,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5, -0x10f5,0x10f5,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x18ea,0x1899,0x1899,0x18e7, -0x18e7,0x1899,0,0,0,0,0,0,0,0,0,0x1401,0xf7b,0xf7b,0x18ed,0, -0,0,0,0,0,0,0,0,0,0x1692,0,0,0x1200,0x1200,0x1200,0x1200, -0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0,0,0, -0,0,0,0,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0,0, -0,0,0,0,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1236,0x1236,0x1236,0x1236,0x1236, -0x11df,0x1236,0x1239,0x1239,0x1236,0x1236,0x1236,0x1257,0x123c,0,0x11dc,0x11dc,0x11dc,0x11dc,0x11dc,0x11dc, -0x11dc,0x11dc,0x11dc,0x11dc,0x11d9,0x11e2,0x11e2,0x11e2,0x16f5,0x168f,0x168f,0x1818,0,0,0,0, -0,0,0,0,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392, -0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1440,0x138c,0x138f,0x1392,0,0,0,0,0, -0,0,0,0,0,0x12c9,0x12c9,0x12c9,0x12c9,0x12c9,0x12c9,0x12c9,0x12c9,0x12c9,0x12c9,0x12c9, -0x12c9,0x12c9,0x12c9,0x12c9,0x12c9,0x12c9,0x12c9,0x12c9,0x12c9,0,0,0,0,0,0,0, -0,0,0,0,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371, -0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371, -0x1371,0x1371,0x1371,0x1371,0x191d,0x1956,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1896,0x189c,0x189c,0x1899,0x1899,0x1899,0,0x1899,0x1899,0x1899,0x1899,0x1899, +0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899, +0x1899,0x1899,0x1899,0x1899,0x1899,0,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1afa, +0x1afa,0x1afa,0x1afa,0x1afa,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0,0,0xa95,0,0xa95,0xa95, +0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95, +0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0,0xa95,0xa95,0,0,0,0xa95,0,0,0xa95, +0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75, +0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0,0xf72,0xf6f,0xf6f,0xf6f,0xf6f,0xf6f,0xf6f,0xf6f,0xf6f, +0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350, +0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0, +0,0,0,0,0,0,0,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0,0x14d0,0,0x14d0,0x14d0, -0x14d0,0x14d0,0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0, -0x14d0,0x14d0,0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d3,0,0, -0,0,0,0,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347, -0x1347,0x1347,0x1347,0x1347,0x1344,0x1344,0x1344,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1425,0x1428,0, -0,0,0,0,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0,0, -0,0,0,0,0x14fa,0x1458,0x1317,0x13cb,0,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320, -0x1320,0,0,0x1320,0x1320,0,0,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320, -0x1320,0x1320,0x1320,0x1320,0x1320,0,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320,0,0x1320,0x1320, -0,0x1320,0x1320,0x1320,0x1320,0x1320,0,0x1722,0x145b,0x131d,0x1416,0x1317,0x1416,0x1317,0x1317,0x1317, -0x1317,0,0,0x1317,0x1317,0,0,0x131a,0x131a,0x141c,0,0,0x149d,0,0,0, -0,0,0,0x1416,0,0,0,0,0,0x1326,0x1323,0x1323,0x1320,0x1320,0x1317,0x1317, -0,0,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0,0,0,0x1419,0x1419,0x1419,0x1419, -0x1419,0,0,0,0,0,0,0,0,0,0,0,0x19fe,0x19fe,0x19fe,0x1a01, -0x19fe,0x1a01,0x19fe,0x19fe,0x19fe,0x19fe,0,0x19fe,0,0,0x1a01,0,0x19fe,0x1a01,0x19fb,0x19fb, -0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb, -0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0,0x19e6,0x1a22,0x19e3,0x19e3,0x1a22,0x1a22,0x1a22,0x1a22,0x1a22, -0x1a22,0,0x1a22,0,0,0x1a25,0,0x1a25,0x1a25,0x1a22,0x19e3,0,0x19e3,0x19e3,0x1a2e,0x1a2e, -0x1a31,0x19e9,0x1a2b,0x19ec,0x19ef,0x19ef,0,0x19e0,0x19e0,0,0,0,0,0,0,0, -0,0x1a28,0x1a28,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5, +0x14e5,0x14e5,0x14e5,0,0x14e5,0x14e5,0,0,0,0,0,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2, +0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5, +0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xccf,0xccf,0xccf,0xccf,0xf4b,0xf4b,0,0,0,0xcd2, +0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c, +0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0,0,0,0,0,0xe19, +0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88, +0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0,0,0,0,0,0, +0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7, +0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0,0,0,0,0x14b8,0x14b8,0x11f7,0x11f7, +0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8, +0,0,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8, +0xc1e,0xc3c,0xc3c,0xc3c,0,0xc3c,0xc3c,0,0,0,0,0,0xc3c,0xc3c,0xc3c,0xc3c, +0xc1e,0xc1e,0xc1e,0xc1e,0,0xc1e,0xc1e,0xc1e,0,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e, +0x170a,0x170a,0,0,0xc3f,0xc3f,0xc3f,0,0,0,0,0xc54,0xbb8,0xbb8,0xbb8,0xbb8, +0xbb8,0xbb8,0xbb8,0xbb8,0x16a1,0,0,0,0,0,0,0,0xbbb,0xbbb,0xbbb,0xbbb, +0xbbb,0xbbb,0xbbe,0xbbe,0xbb8,0,0,0,0,0,0,0,0x1311,0x1311,0x1311,0x1311, +0x1311,0x1422,0x1422,0,0,0,0,0x1308,0x1308,0x1308,0x1308,0x1308,0x130e,0x130e,0x13e0,0x130e, +0x130e,0x130e,0x130b,0,0,0,0,0,0,0,0,0,0xf7e,0xf7e,0xf7e,0xf7e, +0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e, +0xf7e,0xf7e,0,0,0,0xf78,0xf7b,0xf7b,0xf7b,0xf7b,0xf7b,0xf7b,0xf9c,0xf9c,0xf9c,0xf9c, +0xf9c,0xf9c,0xf9c,0xf9c,0xf9c,0xf9c,0xf9c,0xf9c,0xf9c,0xf9c,0xf9c,0xf9c,0xf9c,0xf9c,0xf9c,0xf9c, +0xf9c,0xf9c,0,0,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf96,0xf96,0xf96,0xf96, +0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0, +0,0,0,0,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0x131a,0x131a,0x131a,0x131a, +0x131a,0x131a,0x131a,0x131a,0x131a,0x131a,0x131a,0x131a,0x131a,0x131a,0x131a,0x131a,0x131a,0x131a,0,0, +0,0,0,0,0,0x1317,0x1317,0x1317,0x1317,0,0,0,0,0,0,0, +0,0,0,0,0,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xf48,0xf48,0xf48,0xf48, +0xf48,0xf48,0xf48,0xf48,0xf48,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x14a6,0x14a6,0x14a6,0x14a6, +0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x14a3,0x14a3,0x14a3,0x14a3, +0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0, +0,0,0,0,0,0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x16e3,0x16e3,0x16e6,0x16e6, +0x1734,0x1734,0x1734,0x1734,0,0,0,0,0,0,0,0,0x16e0,0x16e0,0x16e0,0x16e0, +0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0,0,0,0,0,0,0x19b9,0x19b9,0x19b9,0x19b9, +0x19b9,0x19b9,0,0,0,0x1a28,0x1a2b,0x1a25,0x1a25,0x1a25,0x19aa,0x19bc,0x19b3,0x19b3,0x19b3,0x19b3, +0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0,0, +0,0,0,0,0,0,0x19ad,0x19ad,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb, +0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb, +0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b, +0x181b,0x181b,0,0x184e,0x184e,0x1818,0,0,0x181b,0x181b,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0x1992,0x1992,0x1992,0x1a64,0x1a64,0x1a67, +0,0x1ad3,0x1ad3,0x1b45,0x1b45,0x1b45,0x1b42,0x1b42,0x1a5e,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b,0x1a5b, +0x1a5b,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6, +0x1ad6,0x1ad6,0x1ad6,0,0x1b42,0x1b42,0x1b42,0x1b45,0x1b42,0x1b45,0x1b42,0x1b45,0x1b3c,0x1b3f,0x1aaf,0x1aac, +0x1a1c,0x195f,0x195f,0x195f,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f5,0,0,0,0, +0,0,0,0,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, +0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1737, +0x1737,0x16e9,0x16e9,0x16e9,0x16e9,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x18c0,0x18c0,0x18c0,0x18c0, +0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x1908,0x1908, +0x1908,0x1908,0x18c3,0x18c3,0x18c3,0x18c3,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x1803,0x1803,0x1803,0x1803, +0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1800,0x1800,0x1800, +0x1800,0x1800,0x1800,0x1800,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0, +0,0,0,0,0,0,0,0,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x117c,0x1119, +0x1119,0x110a,0x110a,0x110a,0x110a,0x110a,0,0,0,0,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107, +0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d, +0x110d,0x110d,0x110d,0x110d,0x1902,0x18b1,0x18b1,0x18ff,0x18ff,0x18b1,0,0,0,0,0,0, +0,0,0,0x1419,0xf8d,0xf8d,0x1905,0,0,0,0,0,0,0,0,0, +0,0x16aa,0,0,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212, +0x1212,0x1212,0x1212,0x1212,0x1212,0,0,0,0,0,0,0,0x120f,0x120f,0x120f,0x120f, +0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0,0,0,0,0,0,0x1230,0x1230,0x1230,0x1230, +0x1230,0x1230,0x1230,0x124b,0x124b,0x124b,0x124b,0x124b,0x11f1,0x124b,0x124e,0x124e,0x124b,0x124b,0x124b,0x126c, +0x1251,0,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11eb,0x11f4,0x11f4,0x11f4, +0x170d,0x16a7,0x16a7,0x1830,0,0,0,0,0,0,0,0,0x13aa,0x13aa,0x13aa,0x13aa, +0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x1458, +0x13a4,0x13a7,0x13aa,0,0,0,0,0,0,0,0,0,0,0x12e1,0x12e1,0x12e1, +0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1, +0x12e1,0,0,0,0,0,0,0,0,0,0,0,0x1389,0x1389,0x1389,0x1389, +0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0,0x1389, +0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1935,0x196e,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x156f,0x156f,0x15bd,0x15b7,0x15b7,0x156f,0x15ba,0x1572,0x1572,0x1572,0x1572,0x1575,0x1575,0x1569,0x1566,0x1563, -0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x17e2,0x1569,0,0x1563,0x1707,0x1764, -0x17e5,0x17e5,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x14e8,0x14e8,0x14e8,0x14e8, +0x14e8,0x14e8,0x14e8,0,0x14e8,0,0x14e8,0x14e8,0x14e8,0x14e8,0,0x14e8,0x14e8,0x14e8,0x14e8,0x14e8, +0x14e8,0x14e8,0x14e8,0x14e8,0x14e8,0x14e8,0x14e8,0x14e8,0x14e8,0x14e8,0,0x14e8,0x14e8,0x14e8,0x14e8,0x14e8, +0x14e8,0x14e8,0x14e8,0x14e8,0x14e8,0x14eb,0,0,0,0,0,0,0x135f,0x135f,0x135f,0x135f, +0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135c,0x135c,0x135c,0x143a, +0x143a,0x143a,0x143a,0x143a,0x143a,0x143d,0x1440,0,0,0,0,0,0x1359,0x1359,0x1359,0x1359, +0x1359,0x1359,0x1359,0x1359,0x1359,0x1359,0,0,0,0,0,0,0x1512,0x1470,0x132f,0x13e3, +0,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0,0,0x1338,0x1338,0,0,0x1338, +0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0,0x1338,0x1338, +0x1338,0x1338,0x1338,0x1338,0x1338,0,0x1338,0x1338,0,0x1338,0x1338,0x1338,0x1338,0x1338,0,0x173a, +0x1473,0x1335,0x142e,0x132f,0x142e,0x132f,0x132f,0x132f,0x132f,0,0,0x132f,0x132f,0,0,0x1332, +0x1332,0x1434,0,0,0x14b5,0,0,0,0,0,0,0x142e,0,0,0,0, +0,0x133e,0x133b,0x133b,0x1338,0x1338,0x132f,0x132f,0,0,0x1431,0x1431,0x1431,0x1431,0x1431,0x1431, +0x1431,0,0,0,0x1431,0x1431,0x1431,0x1431,0x1431,0,0,0,0,0,0,0, +0,0,0,0,0x1a16,0x1a16,0x1a16,0x1a19,0x1a16,0x1a19,0x1a16,0x1a16,0x1a16,0x1a16,0,0x1a16, +0,0,0x1a19,0,0x1a16,0x1a19,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13, +0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0,0x19fe, +0x1a3d,0x19fb,0x19fb,0x1a3d,0x1a3d,0x1a3d,0x1a3d,0x1a3d,0x1a3d,0,0x1a3d,0,0,0x1a40,0,0x1a40, +0x1a40,0x1a3d,0x19fb,0,0x19fb,0x19fb,0x1a49,0x1a49,0x1a4c,0x1a01,0x1a46,0x1a04,0x1a07,0x1a07,0,0x19f8, +0x19f8,0,0,0,0,0,0,0,0,0x1a43,0x1a43,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1437,0x137d,0x143d,0x143a,0x1383,0x1383,0x1377,0x1383,0,0,0,0,0,0,0,0, -0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0,0,0,0,0,0, -0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x1449, -0x13b0,0x13b0,0x1449,0x1449,0x1449,0x1449,0,0,0x13b0,0x13b0,0x13b3,0x13b3,0x1449,0x1449,0x13b0,0x144f, -0x144c,0x13a7,0x13b9,0x13b9,0x13aa,0x13aa,0x13ad,0x13ad,0x13ad,0x13b9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9, -0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d6,0x14d6,0x14d6,0x14d6,0x1509,0x1509,0,0, -0x1443,0x13a1,0x13a1,0x1395,0x139e,0,0,0,0,0,0,0,0,0,0,0, -0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0,0,0,0,0,0, -0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0x1533,0,0,0, +0,0,0,0,0,0,0,0,0x1587,0x1587,0x15d5,0x15cf,0x15cf,0x1587,0x15d2,0x158a, +0x158a,0x158a,0x158a,0x158d,0x158d,0x1581,0x157e,0x157b,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584, +0x1584,0x1584,0x17fa,0x1581,0,0x157b,0x171f,0x177c,0x17fd,0x17fd,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1245,0x1206,0x1245,0x1206,0x1206, -0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x124b,0x1248,0x175e,0x189c,0,0,0,0,0,0, -0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0,0,0,0,0,0, -0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989, +0,0,0,0,0,0,0,0,0x144f,0x1395,0x1455,0x1452,0x139b,0x139b,0x138f,0x139b, +0,0,0,0,0,0,0,0,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392, +0x1392,0x1392,0,0,0,0,0,0,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce, +0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x1461,0x13c8,0x13c8,0x1461,0x1461,0x1461,0x1461,0,0, +0x13c8,0x13c8,0x13cb,0x13cb,0x1461,0x1461,0x13c8,0x1467,0x1464,0x13bf,0x13d1,0x13d1,0x13c2,0x13c2,0x13c5,0x13c5, +0x13c5,0x13d1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1, +0x14ee,0x14ee,0x14ee,0x14ee,0x1521,0x1521,0,0,0x145b,0x13b9,0x13b9,0x13ad,0x13b6,0,0,0, +0,0,0,0,0,0,0,0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0, +0x13b0,0x13b0,0,0,0,0,0,0,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b, +0x154b,0x154b,0x154b,0x154b,0x154b,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b, +0x121b,0x121b,0x121b,0x125a,0x1218,0x125a,0x1218,0x1218,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x1260,0x125d, +0x1776,0x18b4,0,0,0,0,0,0,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215, +0x1215,0x1215,0,0,0,0,0,0,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1, +0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x14c4,0x14c4,0x14c4,0x14c4, -0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4, -0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x1695,0,0,0x1503,0x14c1,0x1503,0x14be,0x14be,0x1503,0x1503, -0x1503,0x1503,0x14c1,0x1503,0x1503,0x1503,0x1503,0x1506,0,0,0,0,0x14bb,0x14bb,0x14bb,0x14bb, -0x14bb,0x14bb,0x14bb,0x14bb,0x14bb,0x14bb,0x14b8,0x14b8,0x14c7,0x14c7,0x14c7,0x14b8,0x189f,0x189f,0x189f,0x189f, -0x189f,0x189f,0x189f,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x16a1,0x16a1,0x16a1,0x16a1, -0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x169e,0x169e,0x169e,0x170a,0x170a,0x170a,0x170a,0x170a, -0x170a,0x170a,0x170a,0x170a,0x169e,0x1710,0x170d,0x169b,0,0,0,0,0x134d,0x134d,0x134d,0x134d, -0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0, -0,0,0,0,0,0,0,0,0,0,0,0x1353,0x181b,0x181b,0x181b,0x181b, -0x181b,0x181b,0x181b,0,0,0x181b,0,0,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b, -0,0x181b,0x181b,0,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b, -0x181b,0x181b,0x181b,0x181b,0x182d,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0,0x17f4,0x17f7,0,0,0x182d, -0x182d,0x1833,0x183f,0x17fa,0x17f4,0x17fa,0x17f4,0x1830,0x17fd,0x17ee,0x17fd,0,0,0,0,0, -0,0,0,0,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0,0, -0,0,0,0,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0,0,0x177f,0x177f, -0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f, -0x177f,0x177f,0x177f,0x177f,0x177f,0x177c,0x177c,0x177c,0x17af,0x17af,0x17af,0x17af,0,0,0x17af,0x17af, -0x177c,0x177c,0x177c,0x177c,0x17b2,0x177f,0x1779,0x177f,0x177c,0,0,0,0,0,0,0, +0,0,0,0,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc, +0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x16ad,0, +0,0x151b,0x14d9,0x151b,0x14d6,0x14d6,0x151b,0x151b,0x151b,0x151b,0x14d9,0x151b,0x151b,0x151b,0x151b,0x151e, +0,0,0,0,0x14d3,0x14d3,0x14d3,0x14d3,0x14d3,0x14d3,0x14d3,0x14d3,0x14d3,0x14d3,0x14d0,0x14d0, +0x14df,0x14df,0x14df,0x14d0,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x15f6,0x15f9,0x1605,0x1605,0x15f9,0x15fc,0x15f6,0x1656,0,0,0,0, -0,0,0,0,0x1620,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x15ed,0x15ed,0x1641,0x1641,0x1641, -0x1620,0x1620,0x1620,0x1620,0x15e7,0x15ea,0x15ea,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a, -0x188a,0x188a,0x188a,0x188a,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, -0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0,0,0, -0,0,0,0,0x1905,0x1905,0x1905,0x1905,0x1905,0x1905,0x1905,0x1905,0x1905,0x1905,0,0, +0,0,0,0,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9, +0x16b6,0x16b6,0x16b6,0x1722,0x1722,0x1722,0x1722,0x1722,0x1722,0x1722,0x1722,0x1722,0x16b6,0x1728,0x1725,0x16b3, +0,0,0,0,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1362,0x1362, +0x1362,0x1362,0x1362,0x1362,0x1362,0x1362,0x1362,0,0,0,0,0,0,0,0,0, +0,0,0,0x136b,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0,0,0x1833,0,0, +0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0,0x1833,0x1833,0,0x1833,0x1833,0x1833,0x1833, +0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1845,0x180c,0x180c,0x180c, +0x180c,0x180c,0,0x180c,0x180f,0,0,0x1845,0x1845,0x184b,0x1857,0x1812,0x180c,0x1812,0x180c,0x1848, +0x1815,0x1806,0x1815,0,0,0,0,0,0,0,0,0,0x1809,0x1809,0x1809,0x1809, +0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0,0,0,0,0,0,0x1797,0x1797,0x1797,0x1797, +0x1797,0x1797,0x1797,0x1797,0,0,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797, +0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1794,0x1794,0x1794, +0x17c7,0x17c7,0x17c7,0x17c7,0,0,0x17c7,0x17c7,0x1794,0x1794,0x1794,0x1794,0x17ca,0x1797,0x1791,0x1797, +0x1794,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x160e,0x1611,0x161a,0x161a, +0x1611,0x1614,0x160e,0x166b,0,0,0,0,0,0,0,0,0x1635,0x1656,0x1656,0x1656, +0x1656,0x1656,0x1656,0x1605,0x1605,0x1656,0x1656,0x1656,0x1635,0x1635,0x1635,0x1635,0x15ff,0x1602,0x1602,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x18a2,0x18a2,0x18a2,0x18a2, +0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x13bc,0x13bc,0x13bc,0x13bc, +0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc, +0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0,0,0,0,0,0,0,0x191d,0x191d,0x191d,0x191d, +0x191d,0x191d,0x191d,0x191d,0x191d,0x191d,0x1b2d,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x1ab2,0x1a7f,0x1ab2,0x1ab2, +0x1ab2,0x1a7f,0x1ab2,0x1a7f,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x19ef,0x19e9,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x19ec,0x19ec,0x19ec,0x19ec, +0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0,0,0,0,0,0,0x1569,0x1569,0x1569,0x1569, +0x1569,0x1569,0x1569,0x1569,0x1569,0,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569, +0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1566, +0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x1566,0x15c9, +0x1569,0x156c,0x156c,0x1560,0x155d,0x155d,0,0,0,0,0,0,0,0,0,0, +0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x155a,0x155a,0x155a,0x155a,0x155a,0x155a, +0x155a,0x155a,0x155a,0x155a,0x155a,0x155a,0x155a,0x155a,0x155a,0,0,0,0x156f,0x1572,0x1578,0x1578, +0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578, +0,0,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc, +0,0x1575,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x1575,0x15cc,0x15cc,0x1575,0x15cc,0x15cc,0, +0,0,0,0,0,0,0,0,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0, +0x15f6,0x15f6,0,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6, +0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0, +0,0,0x164d,0,0x164d,0x164d,0,0x164d,0x164d,0x164d,0x1650,0x164d,0x1653,0x1653,0x15f9,0x164d, +0,0,0,0,0,0,0,0,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3, +0x15f3,0x15f3,0,0,0,0,0,0,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0,0x16c2, +0x16c2,0,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2, +0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0, +0x172b,0x172b,0,0x16bf,0x16bf,0x172b,0x16bf,0x172e,0x16c2,0,0,0,0,0,0,0, +0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0x16bc,0,0,0,0,0,0, +0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91, +0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a94,0x1a91,0x1a91,0,0,0,0, +0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0x1a8e,0,0,0,0,0,0, +0x1b48,0x1b2a,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb, +0x16cb,0x16cb,0x16c8,0x1731,0x1731,0x16c5,0x16c5,0x16ce,0x16ce,0,0,0,0,0,0,0, +0x1971,0x1971,0x1941,0x193e,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c, +0x195c,0,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c, +0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x193e,0x193e,0x1971,0x1971,0x1971,0x1971,0x1971,0, +0,0,0x193e,0x193e,0x1971,0x1974,0x197a,0x1944,0x1944,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938, +0x1938,0x1938,0x1938,0x1938,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x1a22,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x1a97,0x1a64,0x1a97,0x1a97,0x1a97,0x1a64,0x1a97,0x1a64,0,0,0,0, +0x17f4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x1761,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b, +0x175b,0x175b,0,0,0,0,0,0,0,0,0,0,0,0,0,0x175e, +0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305, +0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x14a9,0,0,0,0,0,0, +0x14a9,0x14a9,0x14a9,0x14a9,0,0,0,0,0,0,0,0,0,0,0,0, +0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06, +0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x19d7,0x19d1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x19d4,0x19d4,0x19d4,0x19d4,0x19d4,0x19d4,0x19d4,0x19d4,0x19d4,0x19d4,0,0, -0,0,0,0,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0,0x1551,0x1551, -0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551, -0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x154e,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0, -0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x154e,0x15b1,0x1551,0x1554,0x1554,0x1548,0x1545,0x1545,0,0, -0,0,0,0,0,0,0,0,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b, -0x154b,0x154b,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542, -0x1542,0,0,0,0x1557,0x155a,0x1560,0x1560,0x1560,0x1560,0x1560,0x1560,0x1560,0x1560,0x1560,0x1560, -0x1560,0x1560,0x1560,0x1560,0x1560,0x1560,0x1560,0x1560,0,0,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4, -0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0,0x155d,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4, -0x15b4,0x155d,0x15b4,0x15b4,0x155d,0x15b4,0x15b4,0,0,0,0,0,0,0,0,0, -0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0,0x15de,0x15de,0,0x15de,0x15de,0x15de,0x15de,0x15de, -0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de, -0x15de,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0,0,0,0x1638,0,0x1638,0x1638,0,0x1638, -0x1638,0x1638,0x163b,0x1638,0x163e,0x163e,0x15e1,0x1638,0,0,0,0,0,0,0,0, -0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0,0,0,0,0,0, -0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0,0x16aa,0x16aa,0,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa, -0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa, -0x16aa,0x16aa,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0,0x1713,0x1713,0,0x16a7,0x16a7,0x1713,0x16a7,0x1716, -0x16aa,0,0,0,0,0,0,0,0x16a4,0x16a4,0x16a4,0x16a4,0x16a4,0x16a4,0x16a4,0x16a4, -0x16a4,0x16a4,0,0,0,0,0,0,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76, -0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76, -0x1a76,0x1a79,0x1a76,0x1a76,0,0,0,0,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73,0x1a73, -0x1a73,0x1a73,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3, -0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b0,0x1719,0x1719,0x16ad,0x16ad,0x16b6, -0x16b6,0,0,0,0,0,0,0,0x1959,0x1959,0x1929,0x1926,0x1944,0x1944,0x1944,0x1944, -0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944, -0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944, -0x1926,0x1926,0x1959,0x1959,0x1959,0x1959,0x1959,0,0,0,0x1926,0x1926,0x1959,0x195c,0x1962,0x192c, -0x192c,0x1920,0x1920,0x1920,0x1920,0x1920,0x1920,0x1920,0x1920,0x1920,0x1920,0x1920,0x1923,0x1923,0x1923,0x1923, -0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1a07,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x17dc,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x1749,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743, -0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0,0,0,0,0,0, -0,0,0,0,0,0,0,0x1746,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed, -0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed, -0x12ed,0x1491,0,0,0,0,0,0,0xccf,0xccf,0xccf,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed, -0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0,0xccc,0xccc,0xccc,0xccc,0x12ea,0,0,0, -0,0,0,0,0,0,0,0,0x1491,0x1491,0x1491,0x1491,0,0,0,0, +0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd, +0x18bd,0x18ba,0x18ba,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x1968,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x196b, +0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0,0,0,0,0,0,0,0,0,0, +0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7, +0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0,0,0,0,0, +0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5, -0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a2,0x18a2,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x1950,0x1917,0x1917,0x1917,0x1917,0x1917,0x1917,0x1953, -0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0,0, -0,0,0,0,0,0,0,0,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f, -0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f, -0x198f,0x198f,0x198f,0,0,0,0,0,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0, +0x1a2e,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a2e,0x19c5,0x19c5,0x19c5,0x1a2e,0x1a2e,0x1a34, +0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0,0,0,0,0,0, +0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122, +0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0,0,0,0,0,0,0, +0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374, +0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0, +0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0,0,0,0,0x1377,0x1377, +0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9, +0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0, +0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0,0,0,0,0,0, +0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d, +0x131d,0x131d,0,0,0x1425,0x1425,0x1425,0x1425,0x1425,0x1320,0,0,0,0,0,0, +0,0,0,0,0x12f3,0x12f3,0x12f6,0x12f6,0x12f9,0x12ea,0,0,0,0,0,0, +0,0,0,0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0,0x12ea, +0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3, +0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0,0,0,0, +0,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3, +0x12f3,0x12f3,0x12f3,0x12f3,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x19d1,0x19d1,0x19d1,0x19d4,0x19d1,0x19d1,0x19d1,0x19d4,0x19d7,0x19d7,0x19d7,0x19da, +0x19da,0x19cb,0x19dd,0x19dd,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0,0, +0,0,0,0,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1, +0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d4,0x16dd,0x16d1,0x16d1,0, +0,0,0,0,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85, +0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0,0,0x1a82, +0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82,0x1a82, +0x1a82,0x1a82,0x1a82,0x1a82,0,0,0,0,0,0,0,0,0,0,0,0, +0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0,0,0,0,0x17c1, +0x11d3,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0, +0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0,0,0,0,0,0,0,0x1242, +0x1242,0x1242,0x1242,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6, +0x15a8,0x1632,0x17af,0x17b2,0x1854,0,0,0,0,0,0,0,0,0,0,0, +0x1851,0x1851,0x1a9d,0x1a9d,0x1a9a,0x1a9a,0x1a9a,0,0,0,0,0,0,0,0,0, +0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d, +0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x1b24,0x1b24,0x1b24,0x1b24,0x1b24,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x1a13,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16, -0x1a16,0x1a13,0x19ad,0x19ad,0x19ad,0x1a13,0x1a13,0x1a19,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa, -0x19aa,0x19aa,0,0,0,0,0,0,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110, -0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110, -0x1110,0,0,0,0,0,0,0,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c, -0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c, -0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0,0x1359,0x1359,0x1359,0x1359,0x1359,0x1359,0x1359,0x1359, -0x1359,0x1359,0,0,0,0,0x135f,0x135f,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1, -0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1, -0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0,0x18ae,0x18ae,0x18ae,0x18ae,0x18ae,0x18ae,0x18ae,0x18ae, -0x18ae,0x18ae,0,0,0,0,0,0,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305, -0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0,0,0x140d,0x140d,0x140d,0x140d, -0x140d,0x1308,0,0,0,0,0,0,0,0,0,0,0x12db,0x12db,0x12de,0x12de, -0x12e1,0x12d2,0,0,0,0,0,0,0,0,0,0,0x12d8,0x12d8,0x12d8,0x12d8, -0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0,0x12d2,0x12d2,0x12d2,0x12d2,0x12d2,0x12d2,0x12d2,0,0x12db, -0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db, -0x12db,0x12db,0x12db,0x12db,0,0,0,0,0,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db, -0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x19b9,0x19b9,0x19b9,0x19bc, -0x19b9,0x19b9,0x19b9,0x19bc,0x19bf,0x19bf,0x19bf,0x19c2,0x19c2,0x19b3,0x19c5,0x19c5,0x19b6,0x19b6,0x19b6,0x19b6, -0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0,0,0,0,0,0,0x16b9,0x16b9,0x16b9,0x16b9, -0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9, -0x16b9,0x16b9,0x16b9,0x16bc,0x16c5,0x16b9,0x16b9,0,0,0,0,0,0x1a6a,0x1a6a,0x1a6a,0x1a6a, -0x1a6a,0x1a6a,0x1a6a,0x1a6a,0x1a6a,0x1a6a,0x1a6a,0x1a6a,0x1a6a,0x1a6a,0x1a6a,0x1a6a,0x1a6a,0x1a6a,0x1a6a,0x1a6a, -0x1a6a,0x1a6a,0x1a6a,0x1a6a,0x1a6a,0,0,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67, -0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0,0,0,0, -0,0,0,0,0,0,0,0,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x175b,0x175b,0x175b, -0x175b,0x175b,0x175b,0,0,0,0,0x17a9,0x11c1,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be, -0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758, -0,0,0,0,0,0,0,0x122d,0x122d,0x122d,0x122d,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4, -0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x1590,0x161d,0x1797,0x179a,0x183c,0,0,0, -0,0,0,0,0,0,0,0,0x1839,0x1839,0x1a82,0x1a82,0x1a7f,0x1a7f,0x1a7f,0, -0,0,0,0,0,0,0,0,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815, -0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x1a0d,0x1b21,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x19f5, -0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88, -0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x1aa3,0x1aa3,0x1aa3,0x1aa3, +0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x1b1e,0x1b1e,0x1b1e,0x1b1e, +0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x1b1e,0x1b1e,0x1b1e,0x1b1e, +0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x18cc,0x18cc,0x18cc,0x18cc,0,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0,0x18cc,0x18cc,0, -0x18c9,0x18c9,0x18c9,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x193e,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x179d,0x179d,0x179d,0,0,0x1941,0,0,0,0,0,0, -0,0,0,0,0x17a0,0x17a0,0x17a0,0x17a0,0,0,0,0,0,0,0,0, -0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a, -0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0,0,0,0, -0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0,0,0,0,0, -0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0,0,0, -0,0,0,0,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0,0, -0x130b,0x1410,0x1413,0x1311,0x13bc,0x13bc,0x13bc,0x13bc,0,0,0,0,0,0,0,0, +0x18e4,0x18e4,0x18e4,0x18e4,0,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0,0x18e4,0x18e4,0, +0x18e1,0x18e1,0x18e1,0x1b12,0x1b1b,0x1b1b,0x1b1b,0x1b15,0x1b15,0,0,0,0,0,0,0, +0,0,0x1956,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x17b5,0x17b5,0x17b5,0,0,0x1959,0,0,0,0,0,0, +0,0,0,0,0x17b8,0x17b8,0x17b8,0x17b8,0x1b18,0,0,0,0,0,0,0, +0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f, +0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0,0,0,0, +0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0,0,0,0,0, +0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0,0,0, +0,0,0,0,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0,0, +0x1323,0x1428,0x142b,0x1329,0x13d4,0x13d4,0x13d4,0x13d4,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971, -0x1971,0x1971,0x1971,0x1971,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1a34,0x1a34, -0x1a34,0,0,0,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e, -0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0,0,0,0,0,0,0x1a34,0x1a34, -0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34, -0x1a34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34, -0x1a3a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0,0, -0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5, -0x18d5,0x18d5,0x18d5,0,0,0,0,0,0,0,0,0,0x1845,0x1845,0x1845,0x1845, -0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0,0,0,0, +0,0,0,0,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989, +0x1989,0x1989,0x1989,0x1989,0x198c,0x198c,0x198c,0x198c,0x198c,0x198c,0x198c,0x198c,0x198c,0x198c,0x1a4f,0x1a4f, +0x1a4f,0,0,0,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986, +0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0,0,0,0,0,0,0x1a4f,0x1a4f, +0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f, +0x1a4f,0,0x1ab8,0x1ab8,0x1ab8,0,0,0,0,0,0,0,0,0x1ac1,0x1ac1,0x1ac1, +0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f, +0x1a55,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0,0, +0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0,0, +0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed, +0x18ed,0x18ed,0x18ed,0,0,0,0,0,0,0,0,0,0x185d,0x185d,0x185d,0x185d, +0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f, -0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0,0, -0,0,0,0,0,0,0,0,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0, -0,0xd08,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f, -0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467, -0x1467,0x1845,0x1845,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xb76,0xb76,0xc21,0xc21,0xc21,0xb76,0,0, +0,0,0,0,0,0,0,0,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918, +0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0,0, +0,0,0,0,0,0,0,0,0xb82,0xb82,0xc30,0xc30,0xc30,0xb82,0,0, +0,0,0,0,0,0,0,0,0x1b33,0x1b33,0x1b33,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8, +0x1ab8,0x1ab8,0x1ab8,0x1b39,0x1b39,0x1ab8,0x1ab8,0x1b30,0x1b30,0x1b30,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9, -0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0,0,0,0, -0,0,0,0,0,0,0,0,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659, -0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0,0,0,0, -0,0,0,0,0,0,0,0,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8, -0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0, -0,0,0,0,0,0,0,0,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2, -0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x1659, -0x1659,0,0,0,0,0,0,0,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91e,0x91e,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91e,0,0x91e,0x91e,0,0,0x91e,0,0,0x91e,0x91e,0, -0,0x91e,0x91e,0x91e,0x91e,0,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91b,0x91b, -0x91b,0x91b,0,0x91b,0,0x91b,0x91b,0x91b,0x91b,0xa29,0x91b,0x91b,0,0x91b,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91b,0x91b,0x91b,0x91b,0x91e,0x91e,0,0x91e, -0x91e,0x91e,0x91e,0,0,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91e,0,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b, -0x91e,0x91e,0,0x91e,0x91e,0x91e,0x91e,0,0x91e,0x91e,0x91e,0x91e,0x91e,0,0x91e,0, -0,0,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0xb16,0xb16,0,0,0x91e,0x91e,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91b,0x91b,0x91b,0x915,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0xc54,0xc51, -0,0,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918, -0x918,0x918,0x918,0x918,0x1494,0x1494,0x1494,0x1494,0x14f7,0x1494,0x1494,0x1497,0x149a,0x1497,0x1497,0x1494, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x14f7, -0x14f7,0x14f7,0x14f7,0x14f7,0,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7, -0x14f7,0x14f7,0x14f7,0x14f7,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1878,0x1875, -0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875, -0x1875,0x1875,0x1875,0,0,0,0,0,0,0x190b,0x190b,0x190b,0x190b,0x190b,0x190b,0, +0,0,0,0,0,0,0,0,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911, +0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0,0,0,0, +0,0,0,0,0,0,0,0,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671, +0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0,0,0,0, +0,0,0,0,0,0,0,0,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1, +0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0, +0,0,0,0,0,0,0,0,0xcde,0xcde,0xcde,0xcde,0xcde,0xcde,0xcde,0xcde, +0xcde,0xcde,0xcde,0xcde,0xcde,0xcde,0xcde,0xcde,0xcde,0xcde,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x1671, +0x1671,0,0,0,0,0,0,0,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927, +0x927,0x927,0x927,0x927,0x927,0x927,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0,0x924,0x924, +0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x927,0x927,0x924,0x924,0x924,0x924,0x924,0x924, +0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924, +0x924,0x924,0x924,0x924,0x927,0,0x927,0x927,0,0,0x927,0,0,0x927,0x927,0, +0,0x927,0x927,0x927,0x927,0,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x924,0x924, +0x924,0x924,0,0x924,0,0x924,0x924,0x924,0x924,0xa32,0x924,0x924,0,0x924,0x924,0x924, +0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927, +0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x924,0x924,0x924,0x924,0x927,0x927,0,0x927, +0x927,0x927,0x927,0,0,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0,0x927,0x927, +0x927,0x927,0x927,0x927,0x927,0,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924, +0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924, +0x927,0x927,0,0x927,0x927,0x927,0x927,0,0x927,0x927,0x927,0x927,0x927,0,0x927,0, +0,0,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0,0x924,0x924,0x924,0x924,0x924,0x924, +0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0xb22,0xb22,0x1ac4,0,0x927,0x927,0x927,0x927, +0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927, +0x927,0x927,0x927,0x927,0x924,0x924,0x924,0x91e,0x924,0x924,0x924,0x924,0x924,0x924,0xc60,0xc5d, +0,0,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921, +0x921,0x921,0x921,0x921,0x14ac,0x14ac,0x14ac,0x14ac,0x150f,0x14ac,0x14ac,0x14af,0x14b2,0x14af,0x14af,0x14ac, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x150f, +0x150f,0x150f,0x150f,0x150f,0,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f, +0x150f,0x150f,0x150f,0x150f,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1, +0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1, +0x1ac1,0,0,0,0x1aeb,0x1aeb,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1af4,0x1ae8,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0x1afd,0x1afd,0x1afd,0x1af7,0x1afd,0x1afd,0x1afd, +0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x15b4,0x15b4,0x15b4,0x15b4, +0x15b4,0x15b4,0x15b4,0,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4, +0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0,0,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0,0x15b4, +0x15b4,0,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0,0,0,0,0,0x191a,0x191a,0x191a,0x191a, +0x191a,0x191a,0x191a,0x191a,0x191a,0x191a,0x191a,0x191a,0x191a,0x191a,0x191a,0x191a,0x1917,0x1917,0x1917,0x1917, +0x1917,0x1917,0x1917,0x1917,0x1917,0x1917,0x1917,0x191a,0x191a,0x191a,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x1962, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0,0x159c,0x159c,0x159c,0x159c, -0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0,0,0x159c, -0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0,0x159c,0x159c,0,0x159c,0x159c,0x159c,0x159c,0x159c,0, -0,0,0,0,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902, -0x1902,0x1902,0x1902,0x1902,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x1902, -0x1902,0x1902,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0x194a,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773, -0x1773,0x1773,0x1773,0x1773,0x1773,0,0,0,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x1773, -0x1773,0x1773,0x1773,0x1773,0x1776,0x1776,0,0,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770, -0x1770,0x1770,0,0,0,0,0x1773,0x176d,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4, -0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18f3,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x1788,0x1788,0x1788,0x1788, -0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x17b5,0x17b5,0x17b5,0x17b5,0x1785,0x1785,0x1785,0x1785, -0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0,0,0,0,0,0x1782,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x1932,0x1932,0x1932,0x1932, -0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x195f,0x195f,0x195f,0x195f, -0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x19ce,0x19ce,0x19ce,0x19ce, -0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x19ce,0x1a1c,0x1a1f, -0x19ce,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0,0,0,0,0x19c8, -0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70, -0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0, -0x1a70,0x1a70,0x1a70,0x1a9a,0x1a70,0x1a70,0x1a9a,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a9a,0x1a9a, -0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a9a,0,0,0,0,0,0,0,0,0x1a70,0x1a70, -0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0,0x1869,0x1869,0x1869,0x1869,0,0x1869,0x1869,0, -0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0, -0x132c,0x132c,0x132c,0x132c,0x132c,0,0,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329, -0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0,0,0,0,0,0,0,0,0, -0x153c,0x153c,0x153c,0x153c,0x15ab,0x15ab,0x15ab,0x15a5,0x15a8,0x15a8,0x15a8,0x1761,0,0,0,0, -0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0,0,0,0,0x1536,0x1536, +0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0,0,0, +0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x178b,0x178b,0x178b,0x178b,0x178b,0x178e,0x178e,0,0, +0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0,0,0,0,0x178b,0x1785, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659, -0x165f,0x1659,0x1659,0x1659,0x165f,0x1659,0x1659,0x1659,0x1659,0,0,0,0,0,0,0, -0,0,0,0,0,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725, -0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725, -0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0,0,0x118e,0x118e,0x118e,0x118e,0,0x118e,0x118e,0x118e, -0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e, -0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0,0x118e,0x118e,0,0x118e,0,0,0x118e, -0,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0,0x118e,0x118e,0x118e,0x118e, -0,0x118e,0,0x118e,0,0,0,0,0,0,0x118e,0,0,0,0,0x118e, -0,0x118e,0,0x118e,0,0x118e,0x118e,0x118e,0,0x118e,0x118e,0,0x118e,0,0,0x118e, -0,0x118e,0,0x118e,0,0x118e,0,0x118e,0,0x118e,0x118e,0,0x118e,0,0,0x118e, -0x118e,0x118e,0x118e,0,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0,0x118e,0x118e,0x118e,0x118e, -0,0x118e,0x118e,0x118e,0x118e,0,0x118e,0,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e, -0x118e,0x118e,0,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e, -0x118e,0x118e,0x118e,0x118e,0,0,0,0,0,0x118e,0x118e,0x118e,0,0x118e,0x118e,0x118e, -0x118e,0x118e,0,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e, -0x118e,0x118e,0x118e,0x118e,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x1185,0x1185,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266, -0,0,0,0,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266, -0x1266,0x1266,0x1266,0x1266,0,0,0,0,0,0,0,0,0x1266,0x1266,0x1266,0x1266, -0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0,0,0,0,0,0,0x1266,0x1266,0x1266,0x1266, -0x1266,0x1266,0x1266,0x1266,0,0,0,0,0,0,0,0,0x1266,0x1266,0x1266,0x1266, -0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0,0, -0x17bb,0x17bb,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0,0,0,0, -0x196e,0x196e,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1a3a,0x1a3a,0x1a3a,0x1a3a,0x1a3a,0x1a3a,0x1a3a,0x1a3a,0x1a3a,0,0,0,0,0,0,0, -0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb, -0x17bb,0x17bb,0x17bb,0,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb, -0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e, -0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x1a34,0,0,0,0,0, +0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc, +0x18cc,0x18cc,0x190b,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0, +0x17cd,0x17cd,0x17cd,0x17cd,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0,0, +0,0,0,0x179a,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a, +0x194a,0x194a,0x194a,0x194a,0x1977,0x1977,0x1977,0x1977,0x1947,0x1947,0x1947,0x1947,0x1947,0x1947,0x1947,0x1947, +0x1947,0x1947,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6, +0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x1a37,0x1a3a,0x19e6,0x19e3,0x19e3,0x19e3,0x19e3,0x19e3,0x19e3,0x19e3, +0x19e3,0x19e3,0x19e3,0,0,0,0,0x19e0,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b, +0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b, +0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0,0x1a8b,0x1a8b,0x1a8b,0x1ab5,0x1a8b,0x1a8b,0x1ab5,0x1a8b, +0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1ab5,0x1ab5,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1ab5,0,0, +0,0,0,0,0,0,0x1a8b,0x1a8b,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0, +0x1881,0x1881,0x1881,0x1881,0,0x1881,0x1881,0,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881, +0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0,0x1344,0x1344,0x1344,0x1344,0x1344,0,0,0x1341, +0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0, +0,0,0,0,0,0,0,0,0x1554,0x1554,0x1554,0x1554,0x15c3,0x15c3,0x15c3,0x15bd, +0x15c0,0x15c0,0x15c0,0x1779,0,0,0,0,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551, +0x1551,0x1551,0,0,0,0,0x154e,0x154e,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671, +0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1677,0x1671,0x1671,0x1671,0x1677,0x1671,0x1671,0x1671, +0x1671,0,0,0,0,0,0,0,0,0,0,0,0,0x173d,0x173d,0x173d, +0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d, +0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0,0, +0x11a0,0x11a0,0x11a0,0x11a0,0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0, +0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0, +0,0x11a0,0x11a0,0,0x11a0,0,0,0x11a0,0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0, +0x11a0,0x11a0,0x11a0,0,0x11a0,0x11a0,0x11a0,0x11a0,0,0x11a0,0,0x11a0,0,0,0,0, +0,0,0x11a0,0,0,0,0,0x11a0,0,0x11a0,0,0x11a0,0,0x11a0,0x11a0,0x11a0, +0,0x11a0,0x11a0,0,0x11a0,0,0,0x11a0,0,0x11a0,0,0x11a0,0,0x11a0,0,0x11a0, +0,0x11a0,0x11a0,0,0x11a0,0,0,0x11a0,0x11a0,0x11a0,0x11a0,0,0x11a0,0x11a0,0x11a0,0x11a0, +0x11a0,0x11a0,0x11a0,0,0x11a0,0x11a0,0x11a0,0x11a0,0,0x11a0,0x11a0,0x11a0,0x11a0,0,0x11a0,0, +0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0, +0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0,0,0,0, +0,0x11a0,0x11a0,0x11a0,0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0, +0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x1197,0x1197,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x127e,0x127e,0x127e,0x127e, +0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0,0,0,0,0x127e,0x127e,0x127e,0x127e, +0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0,0,0,0, +0,0,0,0,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0,0, +0,0,0,0,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0,0,0,0, +0,0,0,0,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e, +0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0,0,0x17d3,0x17d3,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986, +0x1986,0x1986,0x1986,0x1986,0,0,0,0,0x1986,0x1986,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55, +0x1a55,0,0,0,0,0,0,0,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3, +0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0,0x17d3,0x17d3,0x17d3,0x17d3, +0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986, +0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9, +0x17d9,0x17d9,0x1a4f,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x723,0x723,0xd02,0xd02,0xd02,0xd02, -0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,3,3,3,3,0xd02,0xd02,0xd02,0xd02, -0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02, -3,3,3,3,3,3,3,3,3,3,3,3,0x10a4,0x10a4,0x10a4,0x10a4, -0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,3,3,0x10a4,0x10a4,0x10a4, -0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x1269,3,0x10a4,0x10a4,0x10a4, -0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x1125,3,0x10a4,0x10a4,0x10a4, -0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x1269,0x1269,0x1269,0x1269, -0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269, -0x1269,0x1269,3,3,3,3,3,3,3,3,3,3,0x1581,0x1581,0x1581,0x1581, -0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x17bb,3,3,3,3,3,3, +0,0,0x72c,0x72c,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e, +3,3,3,3,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e, +0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,3,3,3,3,3,3,3,3, +3,3,3,3,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6, +0x10b6,0x10b6,0x10b6,3,3,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6, +0x10b6,0x10b6,0x10b6,0x1281,3,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6, +0x10b6,0x10b6,0x10b6,0x1137,3,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6, +0x10b6,0x10b6,0x10b6,0x10b6,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281, +0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,3,3,3,3,3,3, +3,3,3,3,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599, +0x1599,0x17d3,0x1b09,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,0x10aa,0x10aa, -0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa, -0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x1023,0x112b,0x112b,3,3,3,3,3, -3,3,3,3,3,3,3,3,0x1011,0x1011,0x1011,0x1011,0x1011,0x1011,0x1011,0x1011, -0x1011,0x1011,0x1011,0x1011,0x1011,0x1011,0x1011,0x1011,0x1011,0x1011,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b, -0x112b,0x112b,0x112b,0x158a,3,3,3,3,0x100e,0x100e,0x100e,0x100e,0x100e,0x100e,0x100e,0x100e, -0x100e,3,3,3,3,3,3,3,0x1143,0x1143,3,3,3,3,3,3, -3,3,3,3,3,3,3,3,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,3,3, +3,3,3,3,3,3,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc, +0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc, +0x1035,0x113d,0x113d,3,3,3,3,3,3,3,3,3,3,3,3,3, +0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023, +0x1023,0x1023,0x113d,0x113d,0x113d,0x113d,0x113d,0x113d,0x113d,0x113d,0x113d,0x15a2,3,3,3,3, +0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,3,3,3,3,3,3,3, +0x1155,0x1155,3,3,3,3,3,3,3,3,3,3,3,3,3,3, +0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,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,0x1128,0x1125,0x1125,0x1125,0x1125,0x1125,0x1269,0x1269, -0x1269,0x1269,0x1269,0x1269,0x13d1,0x1269,0x1269,0x1269,0x14dc,0x1584,0x1584,0x15c3,0x15c3,0x1791,0x1806,0x1806, -0x1a7c,3,3,3,0x1935,0x18bd,0x18bd,0x18bd,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269, -0x1269,0x1269,0x1269,0x13ce,0x13ce,3,3,3,0x1269,0x1269,0x1269,0x1269,0x1584,0x1584,0x1584,0x160b, -0x160b,0x16e3,0x1791,0x1806,0x1806,3,3,3,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266, -0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x165c,0x165c,0x165c, -0x165c,0x18fc,3,3,3,3,3,3,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791, -0x1791,0x1791,0x1791,0x1791,3,3,3,3,0x18bd,3,3,3,3,3,3,3, -3,3,3,3,3,3,3,3,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725, -0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1a34,0x1a34,0x1a34,0x1a34, -3,3,3,3,3,3,3,3,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c, -0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,3,3,0x1791,0x1791,0x1791,0x1791,0x1806,0x1935,0x1935,0x1935, -0x1791,0x1791,0x1791,0x18bd,0x18bd,3,3,3,0x1791,0x1791,0x1791,0x1806,0x1806,0x1806,0x1806,0x1935, -0x1935,0x19f2,0x1a7c,3,3,3,0x1a7c,0x19f2,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1806,0x1806, -0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x18c0,0x18c0,0x18c0,0x19f2,3, -0x1a7c,3,3,3,3,0x1a7c,0x1935,0x1935,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x18bd, -0x18bd,0x18bd,0x1935,0x1935,0x19f2,3,3,0x19f2,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd, -0x1935,0x19f2,0x1a7c,3,3,3,3,0x1a7c,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x1938, -0x1938,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, +0x113a,0x1137,0x1137,0x1137,0x1137,0x1137,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x13e9,0x1281,0x1281,0x1281, +0x14f4,0x159c,0x159c,0x15db,0x15db,0x17a9,0x181e,0x181e,0x1a97,0x1b09,3,3,0x194d,0x18d5,0x18d5,0x18d5, +0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x13e6,0x13e6,3,3,3, +0x1281,0x1281,0x1281,0x1281,0x159c,0x159c,0x159c,0x1620,0x1620,0x16fb,0x17a9,0x181e,0x181e,3,3,3, +0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e, +0x127e,0x127e,0x127e,0x127e,0x127e,0x1674,0x1674,0x1674,0x1674,0x1914,0x1b09,0x1ac1,3,3,3,3, +0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,3,3,3,3, +0x18d5,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1, +0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d, +0x173d,0x173d,0x173d,0x173d,0x1a4f,0x1a4f,0x1a4f,0x1a4f,3,3,3,3,3,3,3,3, +0x1674,0x1674,0x1674,0x1674,0x1674,0x1674,0x1674,0x1674,0x1674,0x1674,0x1674,0x1674,0x1674,0x1674,3,3, +0x17a9,0x17a9,0x17a9,0x17a9,0x181e,0x194d,0x194d,0x194d,0x17a9,0x17a9,0x17a9,0x18d5,0x18d5,3,3,3, +0x181e,0x181e,0x181e,0x18d8,0x18d8,0x18d8,0x1a0a,3,0x1a97,3,3,3,0x1b09,0x1a97,0x194d,0x194d, +0x181e,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e,0x18d5,0x18d5,0x18d5,0x194d,0x194d,0x1a0a,0x1b09,3,0x1a0a, +0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x194d,0x1a0a,0x1a97,0x1b09,3,3,3,0x1a97, +0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x1950,0x1950,0x1b0c,0x1b0c,3,3,3,3,3, 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, -3,3,0x723,0x723,0x1842,0x1a37,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3, -0x5d3,0x5d0,0x5d0,0x5d0,9,0x90c,9,9,9,9,9,9,9,9,9,9, +3,3,3,3,3,3,3,3,3,3,0x72c,0x72c,0x185a,0x1a52,0x1abb,0x1abb, +0x1abb,6,6,6,6,6,6,6,6,6,6,6,0x5d9,0x5d9,0x5d9,0x5d9, +0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d6,0x5d6,0x5d6,9,0x915,9,9, +9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, -9,9,9,9,9,9,9,9,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07, -0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,9,9,9,9,9,9,9,9, -9,9,9,9,9,9,9,9,0xa5,0xa5,0xa5,0xa5,0xa5,0x765,0x765,0x1977, -0x1977,0x1977,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, -0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, -0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e, -0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0xc,0xc,0x127e,0x127e, -0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x1287,0x13c2,0x128a,0x157e,0x1515,0x15cc,0x15cc,0x15cc, -0x15cc,0x15cc,0x1665,0x1662,0x1668,0x1662,0x1668,0x172e,0x17c4,0x17c4,0x17c4,0x1851,0x1851,0x1848,0x184b,0x1848, -0x184b,0x1848,0x184b,0x1848,0x184b,0x184e,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, +0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13, +9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +0xa5,0xa5,0xa5,0xa5,0xa5,0x76e,0x76e,0x198f,0x198f,0x198f,0xc,0xc,0xc,0xc,0xc,0xc, +0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, +0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xc,0xc,0xc,0xc,0xc, 0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, -0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de, -0x9de,0x9de,0x9de,0x101a,0x101a,0x101a,0xf,0xf,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03, -0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03, -0xc03,0xc03,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, +0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296, +0x1296,0x1296,0x1296,0x1296,0xc,0xc,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296, +0x129f,0x13da,0x12a2,0x1596,0x152d,0x15e4,0x15e4,0x15e4,0x15e4,0x15e4,0x167d,0x167a,0x1680,0x167a,0x1680,0x1746, +0x17dc,0x17dc,0x17dc,0x1869,0x1869,0x1860,0x1863,0x1860,0x1863,0x1860,0x1863,0x1860,0x1863,0x1866,0xc,0xc, +0x1ad0,0x1ad0,0x1acd,0x1aca,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, +0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc, +0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x102c,0x102c,0x102c,0xf,0xf, +0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f, +0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xf,0xf,0xf,0xf,0xf,0xf, 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, -0xf,0xf,0xf,0xf,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a, -0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a, -0x113a,0x113a,0xf,0xf,0x14e2,0x14e2,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85, -0x1a85,0x1a85,0xf,0xf,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614, -0x1614,0x1614,0x1614,0x1614,0x1614,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, -0xf,0xf,0xf,0xf,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965, -0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965, -0x1965,0x1965,0xf,0xf,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939, -0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939, -0x939,0x939,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, +0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x114c,0x114c,0x114c,0x114c, +0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c, +0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x1b0f,0xf,0x14fa,0x14fa,0x1aa0,0x1aa0, +0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0xf,0xf,0x1629,0x1629,0x1629,0x1629, +0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0xf,0xf,0xf, +0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x197d,0x197d,0x197d,0x197d, +0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d, +0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0xf,0xf,0x942,0x942,0x942,0x942, +0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942, +0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0xf,0xf,0xf,0xf,0xf,0xf, 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, -0xf,0xf,0x723,0x723,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0xf, -0xf,0xf,0xf,0xf,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b, -0x193b,0x193b,0x193b,0x193b,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85, -0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0xf,0xf, -0xf,0xf,0xf,0xf,0x366,0x366,0x369,0xa5,0x3a8,0x37b,0x37b,0x37e,0xf6,0xf6,0x15,0x15, -0x15,0x15,0x15,0x86d,0x372,0xb4,0x39c,0x3a5,0xe7,0x372,0xc0,0xc0,0xa5,0xcc,0xcc,0x366, -0xf0,0xed,0x378,0x75,0x45,0x45,0x48,0x48,0x48,0x48,0x48,0x4b,0x48,0x48,0x48,0x18, -0x10b,0x5dc,0x105,0x105,0x38a,0xc6,0xc3,0x387,0x384,0x381,0x396,0xbd,0x390,0x393,0xc9,0xcc, -0x38d,0x38d,0xc9,0xcc,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, -0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0xa5,0x112e,0x112e,0x112e,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0x36,0x36,0x90,0x348,0x24,0x339,0x36,0x8d,0x24,0x348,0x87,0x90, -0x90,0x90,0x87,0x87,0x90,0x90,0x90,0x360,0x24,0x90,0x34b,0x24,0x81,0x90,0x90,0x90, -0x90,0x90,0x24,0x24,0x3f,0x339,0x345,0x24,0x90,0x24,0x3b7,0x2d,0x90,0x51,0x273,0x3cf, -0x90,0x90,0x7e,0x87,0x90,0x90,0x24f,0x90,0x87,0x8a,0x8a,0x8a,0x8a,0x75f,0x756,0xa20, -0xb16,0x963,0x966,0x966,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x27,0x42,0x3f6,0x2a,0x6e7, -0x750,0x759,0x759,0x759,0x957,0x957,0xb10,0xb10,0xb10,0xb10,0xeca,0xecd,0xecd,0x10a7,0x125a,0x126f, -0x1272,0x1272,0x145e,0x15c6,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x30,0x9c6, -0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6, -0x9c6,0x9c6,0x9c6,0xac5,0x960,0x95d,0x95d,0x95d,0x95d,0x966,0x963,0x963,0x963,0x963,0x954,0x95d, -0xb0d,0xc4b,0xc6f,0xd05,0xed0,0xed0,0xed0,0x33f,0x33f,0x33,0x33,0x33,0x33,0x33,0x33,0x33f, -0x33f,0x33f,0x33f,0x39,0x7b,0xa5,0xa5,0xa5,0xdb,0xb1,0xa8,0x987,0x768,0x768,0x765,0x765, -0x765,0x765,0x96c,0x9c3,0x96c,0x96c,0x978,0xa2f,0xa26,0xb19,0xb25,0x975,0xb25,0xb25,0xbd6,0xb25, -0xb22,0xbd9,0xb25,0x95a,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366, -0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0xa2,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xa5,0xcf,0xcf,0xcf, -0xcf,0xcf,0xd2,0xa5,0xcf,0xcf,0xa5,0xa5,0xa5,0xa5,0xcf,0xcf,0x369,0x369,0xa5,0xa5, -0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xd2,0xd2,0xd2, -0xcf,0xcf,0x396,0xcf,0x396,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xa5,0xcf,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0xcf,0xcf,0xa5,0x369,0xa5,0xa5,0xa5,0x765,0x765,0x765,0x765,0x765, -0x765,0x765,0x765,0x765,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0xa5,0x765,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xde,0xd5,0xde,0xd5,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0x366,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x504,0x504,0xa5,0xa5,0xa5,0xa5, -0xcf,0xcf,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x50a,0x507,0xa5,0xa5,0xa5,0xa5,0xa5, +0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x72c,0x72c,0x1827,0x1827,0x1827,0x1827, +0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0xf,0xf,0xf,0xf,0xf,0x1953,0x1953,0x1953,0x1953, +0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1aa0,0x1aa0,0x1aa0,0x1aa0, +0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0, +0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0xf,0xf,0xf,0xf,0xf,0xf,0x36c,0x36c,0x36f,0xa5, +0x3ae,0x381,0x381,0x384,0xf6,0xf6,0x15,0x15,0x15,0x15,0x15,0x876,0x378,0xb4,0x3a2,0x3ab, +0xe7,0x378,0xc0,0xc0,0xa5,0xcc,0xcc,0x36c,0xf0,0xed,0x37e,0x75,0x45,0x45,0x48,0x48, +0x48,0x48,0x48,0x4b,0x48,0x48,0x48,0x18,0x10b,0x5e2,0x105,0x105,0x390,0xc6,0xc3,0x38d, +0x38a,0x387,0x39c,0xbd,0x396,0x399,0xc9,0xcc,0x393,0x393,0xc9,0xcc,0x21,0x21,0x21,0x21, +0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0xa5,0x1140,0x1140,0x1140,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x36,0x36,0x90,0x34e, +0x24,0x33f,0x36,0x8d,0x24,0x34e,0x87,0x90,0x90,0x90,0x87,0x87,0x90,0x90,0x90,0x366, +0x24,0x90,0x351,0x24,0x81,0x90,0x90,0x90,0x90,0x90,0x24,0x24,0x3f,0x33f,0x34b,0x24, +0x90,0x24,0x3bd,0x2d,0x90,0x51,0x276,0x3d5,0x90,0x90,0x7e,0x87,0x90,0x90,0x24f,0x90, +0x87,0x8a,0x8a,0x8a,0x8a,0x768,0x75f,0xa29,0xb22,0x96c,0x96f,0x96f,0x2a,0x2a,0x2a,0x2a, +0x2a,0x2a,0x2a,0x27,0x42,0x3fc,0x2a,0x6f0,0x759,0x762,0x762,0x762,0x960,0x960,0xb1c,0xb1c, +0xb1c,0xb1c,0xedc,0xedf,0xedf,0x10b9,0x1272,0x1287,0x128a,0x128a,0x1476,0x15de,0x354,0x354,0x354,0x354, +0x354,0x354,0x354,0x354,0x354,0x354,0x30,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf, +0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0xace,0x969,0x966,0x966,0x966, +0x966,0x96f,0x96c,0x96c,0x96c,0x96c,0x95d,0x966,0xb19,0xc57,0xc7b,0xd11,0xee2,0xee2,0xee2,0x345, +0x345,0x33,0x33,0x33,0x33,0x33,0x33,0x345,0x345,0x345,0x345,0x39,0x3c,0x348,0x348,0x348, +0x348,0x3c,0x3c,0x3c,0x3c,0x3c,0x54,0x66,0x54,0x60,0x5a,0x1ac7,0xb9d,0xb9d,0xb9d,0xb9d, +0xb9d,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x1af7,0x1af7,0x1af7,0x7b,0xa5,0xa5,0xa5, +0xdb,0xb1,0xa8,0x990,0x771,0x771,0x76e,0x76e,0x76e,0x76e,0x975,0x9cc,0x975,0x975,0x981,0xa38, +0xa2f,0xb25,0xb31,0x97e,0xb31,0xb31,0xbe2,0xb31,0xb2e,0xbe5,0xb31,0x963,0x36c,0x36c,0x36c,0x36c, +0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c, +0xa2,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xcf,0xcf,0xcf,0xcf, +0xcf,0xcf,0xcf,0xcf,0xa5,0xcf,0xcf,0xcf,0xcf,0xcf,0xd2,0xa5,0xcf,0xcf,0xa5,0xa5, +0xa5,0xa5,0xcf,0xcf,0x36f,0x36f,0xa5,0xa5,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf, +0xcf,0xcf,0xcf,0xcf,0xcf,0xd2,0xd2,0xd2,0xcf,0xcf,0x39c,0xcf,0x39c,0xcf,0xcf,0xcf, +0xcf,0xcf,0xcf,0xcf,0xa5,0xcf,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xcf,0xcf,0xa5,0x36f, +0xa5,0xa5,0xa5,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x981,0x981,0x981,0x981, +0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0xa5,0x76e,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, +0xde,0xd5,0xde,0xd5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x36c,0xa5,0xa5,0xa5,0xa5,0xa5, +0xa5,0xa5,0x50a,0x50a,0xa5,0xa5,0xa5,0xa5,0xcf,0xcf,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, +0xa5,0x510,0x50d,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, 0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x765, -0x978,0x765,0x765,0x765,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366, -0xa5,0xa5,0xa5,0xa5,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366, -0x366,0x366,0x366,0x366,0xa5,0xa5,0x366,0x366,0x366,0x366,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c, -0x96c,0x96c,0x96c,0x96c,0x396,0x396,0xa5,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0xa5,0xa5, -0xa5,0xa5,0xcf,0xcf,0xcf,0xcf,0x396,0x396,0xcf,0xcf,0x396,0x396,0xa5,0xa5,0xa5,0xa5, -0x396,0x396,0xcf,0xcf,0x396,0x396,0xa5,0xa5,0xa5,0xa5,0x396,0x396,0x366,0xa5,0xcf,0x396, -0xa5,0xa5,0x366,0x396,0x396,0x396,0xcf,0xcf,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x396,0x366,0x396,0x366,0xa5,0xcf,0xcf,0xcf,0xcf,0xcf, -0xcf,0xa5,0xa5,0x366,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x978,0x978,0x978,0x978, -0x978,0x9d8,0x9d8,0x978,0xae,0xae,0xae,0xae,0xa5,0x396,0x396,0xa5,0xa5,0x366,0xa5,0xa5, -0xa5,0xa5,0x366,0x366,0xa5,0xa5,0xa5,0xa5,0xad7,0xad7,0x969,0x969,0xb1c,0x765,0xae,0xae, -0x36c,0xba,0x36c,0xae,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0xa5,0xae,0xae,0xae, -0xa5,0xa5,0xa5,0xa5,0x396,0xa5,0x396,0xa5,0xa5,0xa5,0xa5,0xa5,0x501,0x501,0x501,0x501, -0x501,0x501,0x501,0x501,0x501,0x501,0x501,0x501,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0x396,0x396,0xcf,0x396,0x366,0x366,0xa5,0x366,0x36c,0x366,0x366,0xa5, -0x366,0x396,0xcf,0x396,0x765,0x765,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c, -0x96c,0x96c,0xb19,0xc00,0x1284,0xae,0xae,0xae,0xae,0x112e,0xa5,0xa5,0xae,0xae,0x1134,0x1134, -0xba,0xba,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0x112e,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x369,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x112e,0xa5,0x112e,0xa5,0xa5,0xa5,0xa5,0x112e, -0x112e,0x112e,0xa5,0x1014,0xa5,0xa5,0xa5,0xb7,0xb7,0xb7,0xb7,0x10b3,0x10b3,0xa5,0xab,0xab, -0xae,0xa5,0xa5,0xa5,0x972,0x96f,0x972,0x96f,0x972,0x96f,0x972,0x96f,0x972,0x96f,0x972,0x96f, -0x972,0x96f,0x336,0x336,0x336,0x336,0x336,0x336,0x336,0x336,0x336,0x336,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x112e,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x112e,0x396,0xcf,0x396,0x396, -0xd2,0xcf,0xcf,0x396,0x396,0xd2,0xcf,0x396,0xd2,0xcf,0xcf,0x396,0xcf,0x396,0xea,0xe1, -0xcf,0x396,0xcf,0xcf,0xcf,0xcf,0x396,0xcf,0xcf,0x396,0x396,0x396,0x396,0xcf,0xcf,0x396, -0xd2,0x396,0xd2,0x396,0x396,0x396,0x396,0x396,0x3a2,0xe4,0x396,0xe4,0xe4,0xcf,0xcf,0xcf, -0x396,0x396,0x396,0x396,0xcf,0xcf,0xcf,0xcf,0x396,0x396,0xcf,0xcf,0xcf,0xd2,0xcf,0xcf, -0xd2,0xcf,0xcf,0xd2,0x396,0xd2,0xcf,0xcf,0x396,0xcf,0xcf,0xcf,0xcf,0xcf,0x396,0xcf, -0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0x399,0x396,0xd2,0xcf, -0x396,0x396,0x396,0x396,0xcf,0xcf,0x396,0x396,0xcf,0xd2,0x399,0x399,0xd2,0xd2,0xcf,0xcf, -0xd2,0xd2,0xcf,0xcf,0xd2,0xd2,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xd2,0xd2,0x396,0x396, -0xd2,0xd2,0x396,0x396,0xd2,0xd2,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf, -0xcf,0x396,0xcf,0xcf,0xcf,0x396,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0x396,0xcf,0xcf, -0xcf,0xcf,0xcf,0xcf,0xd2,0xd2,0xd2,0xd2,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf, -0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0x396,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf, +0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x76e,0x981,0x76e,0x76e,0x76e,0x36c,0x36c,0x36c,0x36c, +0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0xa5,0xa5,0xa5,0xa5,0x36c,0x36c,0x36c,0x36c, +0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0xa5,0xa5,0x36c,0x36c, +0x36c,0x36c,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x39c,0x39c,0xa5,0x36c, +0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0xa5,0xa5,0xa5,0xa5,0xcf,0xcf,0xcf,0xcf,0x39c,0x39c, +0xcf,0xcf,0x39c,0x39c,0xa5,0xa5,0xa5,0xa5,0x39c,0x39c,0xcf,0xcf,0x39c,0x39c,0xa5,0xa5, +0xa5,0xa5,0x39c,0x39c,0x36c,0xa5,0xcf,0x39c,0xa5,0xa5,0x36c,0x39c,0x39c,0x39c,0xcf,0xcf, +0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x39c,0x36c, +0x39c,0x36c,0xa5,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xa5,0xa5,0x36c,0x76e,0x76e,0x76e,0x76e, +0x76e,0x76e,0x76e,0x76e,0x981,0x981,0x981,0x981,0x981,0x9e1,0x9e1,0x981,0xae,0xae,0xae,0xae, +0xa5,0x39c,0x39c,0xa5,0xa5,0x36c,0xa5,0xa5,0xa5,0xa5,0x36c,0x36c,0xa5,0xa5,0xa5,0xa5, +0xae0,0xae0,0x972,0x972,0xb28,0x76e,0xae,0xae,0x372,0xba,0x372,0xae,0xa5,0xa5,0xa5,0xa5, +0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x507,0x507,0x507,0x507, +0x507,0x507,0x507,0x507,0xa5,0xae,0xae,0xae,0xa5,0xa5,0xa5,0xa5,0x39c,0xa5,0x39c,0xa5, +0xa5,0xa5,0xa5,0xa5,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507,0x507, +0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x39c,0x39c,0xcf,0x39c, +0x36c,0x36c,0xa5,0x36c,0x372,0x36c,0x36c,0xa5,0x36c,0x39c,0xcf,0x39c,0x76e,0x76e,0x975,0x975, +0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0xb25,0xc0c,0x129c,0xae,0xae,0xae, +0xae,0x1140,0xa5,0xa5,0xae,0xae,0x1146,0x1146,0xba,0xba,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, +0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0x1140,0xa5,0xa5,0xa5, +0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, +0xa5,0x36f,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, +0x1140,0xa5,0x1140,0xa5,0xa5,0xa5,0xa5,0x1140,0x1140,0x1140,0xa5,0x1026,0xa5,0xa5,0xa5,0xb7, +0xb7,0xb7,0xb7,0x10c5,0x10c5,0xa5,0xab,0xab,0xae,0xa5,0xa5,0xa5,0x97b,0x978,0x97b,0x978, +0x97b,0x978,0x97b,0x978,0x97b,0x978,0x97b,0x978,0x97b,0x978,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c, +0x33c,0x33c,0x33c,0x33c,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, +0xa5,0xa5,0xa5,0xa5,0x1140,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, +0xa5,0xa5,0xa5,0x1140,0x39c,0xcf,0x39c,0x39c,0xd2,0xcf,0xcf,0x39c,0x39c,0xd2,0xcf,0x39c, +0xd2,0xcf,0xcf,0x39c,0xcf,0x39c,0xea,0xe1,0xcf,0x39c,0xcf,0xcf,0xcf,0xcf,0x39c,0xcf, +0xcf,0x39c,0x39c,0x39c,0x39c,0xcf,0xcf,0x39c,0xd2,0x39c,0xd2,0x39c,0x39c,0x39c,0x39c,0x39c, +0x3a8,0xe4,0x39c,0xe4,0xe4,0xcf,0xcf,0xcf,0x39c,0x39c,0x39c,0x39c,0xcf,0xcf,0xcf,0xcf, +0x39c,0x39c,0xcf,0xcf,0xcf,0xd2,0xcf,0xcf,0xd2,0xcf,0xcf,0xd2,0x39c,0xd2,0xcf,0xcf, +0x39c,0xcf,0xcf,0xcf,0xcf,0xcf,0x39c,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf, +0xcf,0xcf,0xcf,0xcf,0x39f,0x39c,0xd2,0xcf,0x39c,0x39c,0x39c,0x39c,0xcf,0xcf,0x39c,0x39c, +0xcf,0xd2,0x39f,0x39f,0xd2,0xd2,0xcf,0xcf,0xd2,0xd2,0xcf,0xcf,0xd2,0xd2,0xcf,0xcf, +0xcf,0xcf,0xcf,0xcf,0xd2,0xd2,0x39c,0x39c,0xd2,0xd2,0x39c,0x39c,0xd2,0xd2,0xcf,0xcf, +0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0x39c,0xcf,0xcf,0xcf,0x39c,0xcf,0xcf, +0xcf,0xcf,0xcf,0xcf,0xcf,0x39c,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xd2,0xd2,0xd2,0xd2, +0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0x39c, +0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf, 0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf, -0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xd2,0xd2,0xd2,0xd2,0xcf,0xcf,0xcf,0xcf, -0xcf,0xcf,0xd2,0xd2,0xd2,0xd2,0xcf,0xd8,0xcf,0xcf,0x978,0x978,0x978,0x978,0x978,0x978, -0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132, +0xd2,0xd2,0xd2,0xd2,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xd2,0xd2,0xd2,0xd2,0xcf,0xd8, +0xcf,0xcf,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981, 0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132, -0x132,0x132,0x132,0x132,0x132,0x132,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x12c,0x12c,0x12c,0x12c, +0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x11d,0x11d, +0x11d,0x11d,0x11d,0x11d,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c, 0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c, -0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936, -0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x132,0x132,0x330,0x132,0x132,0x132,0x132,0x132, -0x132,0x132,0x11d,0x11d,0x98a,0xac2,0x1854,0x1854,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c, +0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f, +0x132,0x132,0x336,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x11d,0x11d,0x993,0xacb,0x186c,0x186c, 0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c, -0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c, -0x132,0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c, -0x12f,0x135,0x132,0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c, -0x12f,0x135,0x132,0x12c,0x132,0x12c,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9, -0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x1854,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46, -0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x132,0x12c,0x132, -0x12c,0x132,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x12f,0x135,0x12f,0x135,0x132,0x12c, -0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x12f,0x132,0x12c,0x12f, -0x132,0x12c,0x12f,0x135,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c, -0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12f,0x12f,0x12f,0x12f,0x12f, -0x12f,0x12f,0x12f,0x12f,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132, -0x132,0x132,0x132,0x132,0x132,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c, -0x12c,0x12c,0x12c,0x12c,0x12c,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x135,0x135,0x135,0x135, -0x135,0x135,0x135,0x135,0x12c,0x132,0x309,0x30c,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854, -0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x12f,0x12c,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f, -0x12c,0x12f,0x12c,0x12c,0x12f,0x12f,0x12c,0x12c,0x12f,0x12f,0x12c,0x12f,0x12c,0x12f,0x12c,0x12c, -0x12f,0x12c,0x12c,0x12f,0x12c,0x12f,0x12c,0x12c,0x12f,0x12c,0x12f,0x12f,0x12c,0x12c,0x12c,0x12f, -0x12c,0x12c,0x12c,0x12c,0x12c,0x12f,0x12c,0x12c,0x12c,0x12c,0x12c,0x12f,0x12c,0x12c,0x12f,0x12c, -0x12f,0x12f,0x12f,0x12c,0x12f,0x12f,0x12f,0x12f,0x1a46,0x1a46,0x12f,0x12f,0x12f,0x12f,0x12c,0x12c, -0x12f,0x12c,0x12c,0x12c,0x12c,0x12f,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c, -0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12f,0x12f,0x12c,0x12c, -0x12f,0x12c,0x12f,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12f,0x12f,0x12f,0x12c,0x12c, -0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1854,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936, -0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x132,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132, -0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x132,0x12c,0x12f, -0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132, -0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f, +0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c, +0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c, +0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x132,0x12c,0x12f,0x135, +0x132,0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x132,0x12c,0x10cb,0x10cb, +0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x186c,0x1a61, +0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x132, +0x12c,0x12f,0x135,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x132,0x12c,0x132,0x12c,0x132,0x12c, +0x132,0x12c,0x12f,0x135,0x12f,0x135,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c, +0x132,0x12c,0x132,0x12c,0x12f,0x132,0x12c,0x12f,0x132,0x12c,0x12f,0x135,0x12c,0x12c,0x12c,0x12c, +0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c, +0x12c,0x12c,0x12c,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x132,0x132,0x132,0x132, +0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x12c,0x12c,0x12c, +0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12f,0x12f,0x12f, +0x12f,0x12f,0x12f,0x12f,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x12c,0x132,0x30c,0x30f, +0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c, +0x12f,0x12c,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12c,0x12f,0x12c,0x12c,0x12f,0x12f,0x12c,0x12c, +0x12f,0x12f,0x12c,0x12f,0x12c,0x12f,0x12c,0x12c,0x12f,0x12c,0x12c,0x12f,0x12c,0x12f,0x12c,0x12c, +0x12f,0x12c,0x12f,0x12f,0x12c,0x12c,0x12c,0x12f,0x12c,0x12c,0x12c,0x12c,0x12c,0x12f,0x12c,0x12c, +0x12c,0x12c,0x12c,0x12f,0x12c,0x12c,0x12f,0x12c,0x12f,0x12f,0x12f,0x12c,0x12f,0x12f,0x12f,0x12f, +0x1a61,0x1a61,0x12f,0x12f,0x12f,0x12f,0x12c,0x12c,0x12f,0x12c,0x12c,0x12c,0x12c,0x12f,0x12c,0x12c, +0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c, +0x12c,0x12c,0x12c,0x12c,0x12f,0x12f,0x12c,0x12c,0x12f,0x12c,0x12f,0x12c,0x12c,0x12c,0x12c,0x12c, +0x12c,0x12c,0x12c,0x12f,0x12f,0x12f,0x12c,0x12c,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x186c, +0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f, +0x132,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x132, +0x12c,0x12f,0x135,0x132,0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f, +0x135,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f, 0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f, -0x135,0x132,0x12c,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f, +0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x135,0x132,0x12c,0x12f,0x12f,0x12f,0x12f,0x12f, 0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f, -0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x135,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132, +0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x135, 0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132, -0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135, -0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x132,0x132,0x132, -0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x1a1,0x1a1,0x5f1,0x5f1,0x2fd,0x300,0x31b,0x31b, -0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x19b,0xd5f,0xd5c,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8, -0x13d4,0x1029,0x1029,0xcd5,0xcd5,0xc0f,0xcd5,0xcd5,0x1041,0x5f7,0x5f7,0x19e,0xa4d,0x1a7,0x1a7,0x1a7, -0x1a7,0x1a7,0x1a7,0x1a7,0x1a1,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x5b8,0x5b8,0x5b8, -0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x5b2,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8, -0x5b8,0x5bb,0x5b8,0x5b8,0x5b2,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x1152,0x10c5,0x5fa,0x1a1,0x19e,0x19e, -0x19e,0x5f7,0x5f7,0x5f7,0x5f4,0x5f7,0x5f7,0x5f7,0x5f7,0x19e,0x19e,0x19e,0x19e,0x6d8,0xeee,0x10c5, -0x1a4,0x660,0x663,0x5d6,0x5d6,0x1041,0x1152,0x1152,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5, -0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0, -0x1b0,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x99f,0x99f,0xb6d,0xb6d,0x303,0xb70,0x11a0,0x11a0,0x11a0, -0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad, +0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132, +0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135, +0x135,0x135,0x135,0x135,0x135,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132, +0x1a1,0x1a1,0x5fa,0x5fa,0x300,0x303,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e, +0x19b,0xd6b,0xd68,0x10da,0x10da,0x10da,0x10da,0x10da,0x13ec,0x103b,0x103b,0xce1,0xce1,0xc1b,0xce1,0xce1, +0x1053,0x600,0x600,0x19e,0xa56,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a1,0x1a7,0x1a7,0x1a7, +0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be, +0x5be,0x5b8,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5c1,0x5be,0x5be,0x5b8,0x5be,0x5be,0x5be, +0x5be,0x5be,0x1164,0x10d7,0x603,0x1a1,0x19e,0x19e,0x19e,0x600,0x600,0x600,0x5fd,0x600,0x600,0x600, +0x600,0x19e,0x19e,0x19e,0x19e,0x6e1,0xf00,0x10d7,0x1a4,0x669,0x66c,0x5dc,0x5dc,0x1053,0x1164,0x1164, +0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0, +0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x9a8, +0x9a8,0xb79,0xb79,0x306,0xb7c,0x11b2,0x11b2,0x11b2,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad, 0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad, -0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5, -0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5, -0x204,0x204,0x204,0xef7,0xef7,0xef7,0xef7,0xef7,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201, +0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf, +0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf, +0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x204,0x204,0x204,0xf09,0xf09,0xf09,0xf09,0xf09, 0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201, -0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4, -0x207,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204, +0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201, +0x201,0x201,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0x207,0x204,0x204,0x204,0x204,0x204,0x204,0x204, 0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204, -0x204,0x204,0x204,0x204,0x25b,0x255,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267, -0x282,0x27c,0x26d,0x267,0x26d,0x267,0x282,0x27c,0x26d,0x267,0x26d,0x267,0x25b,0x255,0x25b,0x255, -0x26d,0x267,0x26d,0x267,0x282,0x27c,0x26d,0x267,0x282,0x27c,0x26d,0x267,0x26d,0x267,0x25b,0x255, -0x25b,0x255,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x282,0x27c,0x26d,0x267,0x26d,0x267, -0x282,0x27c,0x282,0x27c,0x26d,0x267,0x282,0x27c,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267, -0x282,0x27c,0x26d,0x267,0x282,0x27c,0x25b,0x255,0x25b,0x255,0x25b,0x255,0x26d,0x267,0x26d,0x267, -0x26d,0x267,0x26d,0x267,0x26d,0x267,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c, -0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x282,0x27c, -0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x282,0x27c,0x26d,0x267, -0x26d,0x267,0x282,0x27c,0x26d,0x267,0x267,0x267,0x267,0x267,0x270,0x6ea,0xd74,0xd74,0xd8c,0xd74, -0x3d2,0x3d2,0x3d2,0x3d2,0x3d2,0x3d2,0x3d2,0x3d2,0x3d2,0x3d2,0x3d2,0x3d2,0x276,0x276,0x276,0x276, -0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x270,0x270,0x270,0x270,0x270,0x270, -0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c, -0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c,0x282,0x27c, -0x282,0x27c,0xd77,0xd74,0xd77,0xd74,0xd77,0xd74,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1, -0x5c1,0x1149,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1, -0x5c1,0x5c1,0x1146,0x1635,0x1635,0xd95,0x62a,0x28e,0x504,0x510,0x510,0x510,0x510,0x510,0x510,0x510, -0x510,0x510,0x6d2,0x6d2,0x6d2,0x6d2,0x6cc,0x6cc,0x573,0x588,0x588,0x588,0x588,0x585,0x4bf,0x56d, -0x87f,0x87f,0x87f,0x9db,0x9f9,0x9f6,0x897,0x306,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c, -0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x339,0x339,0x339,0x339, -0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339, -0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x351,0x351, -0x351,0x351,0x351,0x351,0x351,0x351,0x351,0x351,0x351,0x351,0x351,0x351,0x351,0x351,0x351,0x351, -0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e,0x34e, -0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366, -0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366,0x366, -0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7, -0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7,0x3e7, -0x9c9,0x417,0x40e,0x40b,0x411,0x414,0x405,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408, -0x41a,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405, -0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405, -0x405,0x405,0x6c9,0x6c9,0x420,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x459,0x459,0x459,0x459,0x459, -0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x423, -0x441,0x41d,0x447,0x44a,0x444,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x456,0x456,0x456,0x456,0x456, -0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x423, -0x441,0x41d,0x441,0x9cc,0x42c,0x567,0x56a,0x570,0x4b3,0x519,0x59d,0x516,0x5a3,0x5a0,0x5a9,0x5a6, -0x564,0x561,0x564,0x561,0x55e,0x55b,0x504,0x570,0x55e,0x55b,0x55e,0x55b,0x55e,0x55b,0x55e,0x55b, -0x576,0x57c,0x57f,0x579,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, -0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, -0xadd,0xadd,0xc09,0x4b6,0x5d9,0x5d6,0x5d9,0x5d6,0xe73,0xe70,0xe73,0x13ec,0x13e9,0x13ec,0x13e9,0x13ec, -0x13e9,0x13ec,0x14f4,0x14f1,0x4c8,0x4da,0x4da,0x4f8,0x4f8,0x4ce,0x4bc,0x4ce,0x4bc,0x4ce,0x4bc,0x4ce, -0x4bc,0x4ce,0x4bc,0x4ce,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591, -0x591,0x591,0x591,0x591,0x591,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0xace,0xace,0xace,0xace,0x597, -0x597,0x597,0x597,0x597,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5, -0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5, -0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0xace,0xace,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513, -0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513, -0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x51c,0x51c,0x513,0x51c,0x513,0x51c, -0x51c,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x513,0x51c,0x513,0x51c,0x513,0x51c, -0x51c,0x513,0x513,0x51c,0x51c,0x51c,0x513,0x513,0x513,0x513,0x1215,0x1215,0x9de,0x9de,0x9de,0x9de, -0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51c,0x51f, -0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f, -0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f, -0x51f,0x51c,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c, -0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c, -0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c, -0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51c,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51c,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c, -0x51c,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51c,0x51f,0x51c,0x51f,0x51f,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06, -0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xe52,0xe52,0xe52,0xe52, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f,0x51f, -0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528, -0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528,0x528, -0x528,0x528,0x1020,0x1020,0x1020,0x1020,0x1020,0x531,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b, +0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x25b,0x255,0x26d,0x267, +0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x285,0x27f,0x26d,0x267,0x26d,0x267,0x285,0x27f, +0x26d,0x267,0x26d,0x267,0x25b,0x255,0x25b,0x255,0x26d,0x267,0x26d,0x267,0x285,0x27f,0x26d,0x267, +0x285,0x27f,0x26d,0x267,0x26d,0x267,0x25b,0x255,0x25b,0x255,0x26d,0x267,0x26d,0x267,0x26d,0x267, +0x26d,0x267,0x285,0x27f,0x26d,0x267,0x26d,0x267,0x285,0x27f,0x285,0x27f,0x26d,0x267,0x285,0x27f, +0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x285,0x27f,0x26d,0x267,0x285,0x27f,0x25b,0x255, +0x25b,0x255,0x25b,0x255,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x285,0x27f, +0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267, +0x26d,0x267,0x26d,0x267,0x26d,0x267,0x285,0x27f,0x26d,0x267,0x26d,0x267,0x26d,0x267,0x26d,0x267, +0x26d,0x267,0x26d,0x267,0x285,0x27f,0x26d,0x267,0x26d,0x267,0x285,0x27f,0x26d,0x267,0x267,0x267, +0x267,0x267,0x273,0x6f3,0xd80,0xd80,0xd98,0xd80,0x3d8,0x3d8,0x3d8,0x3d8,0x3d8,0x3d8,0x3d8,0x3d8, +0x3d8,0x3d8,0x3d8,0x3d8,0x279,0x279,0x279,0x279,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf, +0x3cf,0x3cf,0x273,0x273,0x273,0x273,0x273,0x273,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f, +0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f, +0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f,0x285,0x27f,0xd83,0xd80,0xd83,0xd80,0xd83,0xd80, +0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x115b,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7, +0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x1158,0x164a,0x164a,0xda1,0x633,0x291, +0x50a,0x516,0x516,0x516,0x516,0x516,0x516,0x516,0x516,0x516,0x6db,0x6db,0x6db,0x6db,0x6d5,0x6d5, +0x579,0x58e,0x58e,0x58e,0x58e,0x58b,0x4c5,0x573,0x888,0x888,0x888,0x9e4,0xa02,0x9ff,0x8a0,0x309, +0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342, +0x342,0x342,0x342,0x342,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f, +0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x33f, +0x33f,0x33f,0x33f,0x33f,0x33f,0x33f,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357, +0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x354,0x354,0x354,0x354,0x354,0x354,0x354,0x354, +0x354,0x354,0x354,0x354,0x354,0x354,0x354,0x354,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c, +0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c, +0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x36c,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed, +0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed, +0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x9d2,0x41d,0x414,0x411,0x417,0x41a,0x40b,0x40e, +0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x420,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b, +0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b, +0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x40b,0x6d2,0x6d2,0x426,0x465,0x465,0x465, +0x465,0x465,0x465,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f, +0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x429,0x447,0x423,0x44d,0x450,0x44a,0x462,0x462,0x462, +0x462,0x462,0x462,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c, +0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x429,0x447,0x423,0x447,0x9d5,0x432,0x56d,0x570,0x576, +0x4b9,0x51f,0x5a3,0x51c,0x5a9,0x5a6,0x5af,0x5ac,0x56a,0x567,0x56a,0x567,0x564,0x561,0x50a,0x576, +0x564,0x561,0x564,0x561,0x564,0x561,0x564,0x561,0x57c,0x582,0x585,0x57f,0x52b,0x52b,0x52b,0x52b, 0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b, -0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52e,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b, -0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b, -0x52b,0x52b,0x52b,0x52b,0x537,0x534,0x537,0x53a,0x534,0x537,0x534,0x537,0x534,0x537,0x534,0x534, -0x534,0x534,0x534,0x534,0x537,0x537,0x534,0x537,0x537,0x534,0x537,0x537,0x534,0x537,0x537,0x534, -0x537,0x537,0x534,0x534,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591, -0xace,0xace,0xace,0xace,0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543, -0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543,0x543, -0x543,0x543,0x543,0x17b8,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546, -0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546, -0x546,0x546,0x546,0x546,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x9f3,0x54f,0x549,0x54f, -0x549,0x54f,0x549,0x54f,0x549,0x54f,0x549,0x549,0x54c,0x549,0x54c,0x549,0x54c,0x549,0x54c,0x549, -0x54c,0x549,0x54c,0x549,0x54c,0x549,0x54c,0x549,0x54c,0x549,0x54c,0x549,0x54c,0x549,0x54c,0x54f, -0x549,0x54c,0x549,0x54c,0x549,0x54c,0x549,0x549,0x549,0x549,0x549,0x549,0x54c,0x54c,0x549,0x54c, -0x54c,0x549,0x54c,0x54c,0x549,0x54c,0x54c,0x549,0x54c,0x54c,0x549,0x549,0x549,0x549,0x549,0x54f, -0x549,0x54f,0x549,0x54f,0x549,0x549,0x549,0x549,0x549,0x549,0x54f,0x549,0x549,0x549,0x549,0x549, -0x54c,0x54f,0x54f,0x54c,0x54c,0x54c,0x54c,0x558,0x58b,0x552,0x555,0x9ea,0x591,0x591,0x591,0x591, -0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591, -0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x1026,0x1026,0x1026,0x1026, -0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xff0,0xace,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5, -0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591, -0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591,0x591, -0x591,0x591,0x591,0x591,0x591,0x591,0x591,0xace,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594, -0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594, -0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5, -0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x717,0x6f3,0x6f3,0x6f3,0x6f3,0x6ed,0x6f3,0x6f3, -0x708,0x6f3,0x6f3,0x702,0x6ff,0x705,0x705,0x705,0x705,0x705,0x708,0x6ed,0x6f9,0x6ed,0x6ed,0x6ed, -0x73e,0x73e,0x6ed,0x6ed,0x6ed,0x6ed,0x6ed,0x6ed,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b, -0x70b,0x70b,0x6ed,0x6ed,0x6ed,0x6ed,0x6ed,0x6ed,0x6ed,0x6ed,0x6ed,0x6ed,0x6f0,0x73e,0x6ed,0x73e, -0x6ed,0x741,0x6fc,0x6f6,0x6fc,0x6f6,0x711,0x711,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720, -0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720, -0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726, -0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726, -0x726,0x726,0x726,0x726,0x726,0x726,0x723,0x723,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726, -0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726, -0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x729,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c, -0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c, -0x72c,0x72c,0x72c,0x72c,0x729,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c, -0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c, -0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765, -0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x978,0x978,0x978,0x978,0x978, -0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a, -0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a,0x77a, -0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0xb67, -0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x795,0x795,0x795,0x795,0x795,0x795,0x795,0x795, -0x798,0x798,0x798,0x798,0x798,0x798,0x798,0xb64,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798, -0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798, -0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x798,0x8a0,0x8a0,0x8a0,0x8a3,0x8a3,0x8a0,0x8a0,0x8a0, -0x89a,0x89d,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8c4,0x8c4,0x7b9,0x8b5, -0x8b5,0x8b5,0x8b5,0x8b5,0x8b5,0x8b5,0x7b9,0x7b9,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8, -0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8, -0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7fb,0x7f8,0x7f8,0x7f8,0x7f8, -0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8, -0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x8ca,0x8ca,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8, -0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8, -0x7f8,0x7f8,0x7f8,0x7f8,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x80d,0x80d, -0x801,0x801,0x801,0x801,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x8a6,0x804,0x804,0x8d0,0x8d0,0xe5b,0xe5b, -0xe5b,0xe5b,0xe8e,0xe8e,0x8a9,0x8a9,0xe5b,0x8a9,0x8a9,0x8a9,0x8ac,0x8a9,0xe5b,0x8a9,0x8a9,0xda7, -0x807,0x8d3,0x8d3,0x8d3,0x8d3,0x80a,0x8d3,0xe8e,0xe8e,0xe8e,0x8d3,0x8d6,0x807,0x906,0xe94,0xdaa, -0xdaa,0xe8e,0xe8e,0xe5b,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c, -0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c, -0x81c,0x81c,0x81c,0x81c,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855, -0x855,0x852,0x858,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0xf12,0xf12,0xf12,0xf12,0xf12, -0xf12,0xf12,0xf12,0xf12,0xf0f,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855, -0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855, -0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x85e,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b, -0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b, -0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x876,0x876,0x876,0x876, -0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876, -0x876,0x876,0x876,0x876,0x1137,0x1137,0x1137,0x180c,0x180c,0x180c,0x180c,0x180c,0x879,0x879,0x879,0x879, -0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879, -0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x87c,0x87c,0x87c,0x87c, -0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c, -0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x87c,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x885,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885, -0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x885, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x885,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x885,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882, -0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882, -0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x885,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x885,0x882,0x885,0x885,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885, -0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x885,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882, -0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x885,0x885,0x885,0x885,0x885,0x885, +0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0x52b,0xae6,0xae6,0xc15,0x4bc,0x5df,0x5dc,0x5df,0x5dc, +0xe82,0xe7f,0xe82,0x1404,0x1401,0x1404,0x1401,0x1404,0x1401,0x1404,0x150c,0x1509,0x4ce,0x4e0,0x4e0,0x4fe, +0x4fe,0x4d4,0x4c2,0x4d4,0x4c2,0x4d4,0x4c2,0x4d4,0x4c2,0x4d4,0x4c2,0x4d4,0x597,0x597,0x597,0x597, +0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x4cb,0x4cb,0x4cb, +0x4cb,0x4cb,0x4cb,0xad7,0xad7,0xad7,0xad7,0x59d,0x59d,0x59d,0x59d,0x59d,0x4cb,0x4cb,0x4cb,0x4cb, +0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb, +0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0xad7,0xad7, +0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519, +0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519,0x519, +0x519,0x519,0x522,0x522,0x519,0x522,0x519,0x522,0x522,0x519,0x519,0x519,0x519,0x519,0x519,0x519, +0x519,0x519,0x519,0x522,0x519,0x522,0x519,0x522,0x522,0x519,0x519,0x522,0x522,0x522,0x519,0x519, +0x519,0x519,0x1224,0x1224,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7, +0x9e7,0x9e7,0x9e7,0x9e7,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x522,0x522,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x522, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x522,0x525,0x522,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x522,0x522,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x522,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x522,0x522,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x522,0x522,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x522,0x525,0x522,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525, +0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x522,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x522,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x522,0x522,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525,0x525,0x522,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x522,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x522,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x522,0x525,0x522,0x525,0x525,0xc12,0xc12, +0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12, +0xc12,0xc12,0xc12,0xc12,0xe5e,0xe5e,0xe5e,0xe5e,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525, +0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x525,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e, +0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e, +0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x1032,0x1032,0x1032,0x1032,0x1032,0x537, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x534,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x53d,0x53a,0x53d,0x540, +0x53a,0x53d,0x53a,0x53d,0x53a,0x53d,0x53a,0x53a,0x53a,0x53a,0x53a,0x53a,0x53d,0x53d,0x53a,0x53d, +0x53d,0x53a,0x53d,0x53d,0x53a,0x53d,0x53d,0x53a,0x53d,0x53d,0x53a,0x53a,0x597,0x597,0x597,0x597, +0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0xad7,0xad7,0xad7,0xad7,0x549,0x549,0x549,0x549, +0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549, +0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x17d0,0x54c,0x54c,0x54c,0x54c, +0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c, +0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x54c,0x597,0x597,0x597,0x597, +0x597,0x597,0x597,0x597,0x9fc,0x555,0x54f,0x555,0x54f,0x555,0x54f,0x555,0x54f,0x555,0x54f,0x54f, +0x552,0x54f,0x552,0x54f,0x552,0x54f,0x552,0x54f,0x552,0x54f,0x552,0x54f,0x552,0x54f,0x552,0x54f, +0x552,0x54f,0x552,0x54f,0x552,0x54f,0x552,0x555,0x54f,0x552,0x54f,0x552,0x54f,0x552,0x54f,0x54f, +0x54f,0x54f,0x54f,0x54f,0x552,0x552,0x54f,0x552,0x552,0x54f,0x552,0x552,0x54f,0x552,0x552,0x54f, +0x552,0x552,0x54f,0x54f,0x54f,0x54f,0x54f,0x555,0x54f,0x555,0x54f,0x555,0x54f,0x54f,0x54f,0x54f, +0x54f,0x54f,0x555,0x54f,0x54f,0x54f,0x54f,0x54f,0x552,0x555,0x555,0x552,0x552,0x552,0x552,0x55e, +0x591,0x558,0x55b,0x9f3,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597, +0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597, +0x597,0x597,0x597,0x597,0x1038,0x1038,0x1038,0x1038,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002, +0xad7,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de, +0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597, +0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0x597,0xad7, +0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a, +0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a, +0x59a,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de, +0x720,0x6fc,0x6fc,0x6fc,0x6fc,0x6f6,0x6fc,0x6fc,0x711,0x6fc,0x6fc,0x70b,0x708,0x70e,0x70e,0x70e, +0x70e,0x70e,0x711,0x6f6,0x702,0x6f6,0x6f6,0x6f6,0x747,0x747,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6, +0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6, +0x6f6,0x6f6,0x6f6,0x6f6,0x6f9,0x747,0x6f6,0x747,0x6f6,0x74a,0x705,0x6ff,0x705,0x6ff,0x71a,0x71a, +0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729, +0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729, +0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f, +0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72c,0x72c, +0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f, +0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f, +0x732,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735, +0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x732,0x735,0x735,0x735, +0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735, +0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x735,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e, +0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e,0x76e, +0x76e,0x76e,0x76e,0x981,0x981,0x981,0x981,0x981,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783, +0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783, +0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1, +0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0xb73,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1, +0x79e,0x79e,0x79e,0x79e,0x79e,0x79e,0x79e,0x79e,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0xb70, +0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1, +0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1, +0x8a9,0x8a9,0x8a9,0x8ac,0x8ac,0x8a9,0x8a9,0x8a9,0x8a3,0x8a6,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9, +0x8a9,0x8a9,0x8a9,0x8a9,0x8cd,0x8cd,0x7c2,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x8be,0x7c2,0x7c2, +0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801, +0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801, +0x801,0x801,0x801,0x804,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801, +0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801, +0x801,0x8d3,0x8d3,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801, +0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x879,0x879,0x879,0x879, +0x879,0x879,0x879,0x879,0x879,0x879,0x816,0x816,0x80a,0x80a,0x80a,0x80a,0x8af,0x8af,0x8af,0x8af, +0x8af,0x8af,0x80d,0x80d,0x8d9,0x8d9,0xe67,0xe67,0xe67,0xe67,0xea0,0xea0,0x8b2,0x8b2,0xe67,0x8b2, +0x8b2,0x8b2,0x8b5,0x8b2,0xe67,0x8b2,0x8b2,0xdb3,0x810,0x8dc,0x8dc,0x8dc,0x8dc,0x813,0x8dc,0xea0, +0xea0,0xea0,0x8dc,0x8df,0x810,0x90f,0xea6,0xdb6,0xdb6,0xea0,0xea0,0xe67,0x825,0x825,0x825,0x825, +0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825, +0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x825,0x85e,0x85e,0x85e,0x85e, +0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85b,0x861,0x85e,0x85e,0x85e,0x85e,0x85e, +0x85e,0x85e,0x85e,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf21,0x85e,0x85e,0x85e, +0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e, +0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e, +0x867,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864, +0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864, +0x864,0x864,0x864,0x864,0x87f,0x87f,0x87f,0x87f,0x87f,0x87f,0x87f,0x87f,0x87f,0x87f,0x87f,0x87f, +0x87f,0x87f,0x87f,0x87f,0x87f,0x87f,0x87f,0x87f,0x87f,0x87f,0x87f,0x87f,0x1149,0x1149,0x1149,0x1824, +0x1824,0x1824,0x1824,0x1824,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, 0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x885, -0x885,0x885,0x885,0x885,0x885,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x882, -0x882,0x882,0x882,0x882,0x882,0x882,0x885,0x882,0x882,0x882,0x882,0x882,0x882,0x882,0x180f,0x180f, -0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x888,0x888,0x9ed,0x9ed,0x888,0x888,0x888,0x888, -0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x9ed,0x888,0x888,0x888, -0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x888,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, -0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b, +0x882,0x882,0x882,0x882,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885, +0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885,0x885, +0x885,0x885,0x885,0x885,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, 0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, 0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, -0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0, -0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x8a0,0x89d,0x89d,0x8a0, -0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9, +0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88e,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88e, +0x88b,0x88e,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88e,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88e,0x88b,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x88e,0x88b, +0x88b,0x88b,0x88b,0x88b,0x88b,0x88b,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827, +0x891,0x891,0x9f6,0x9f6,0x891,0x891,0x891,0x891,0x891,0x891,0x891,0x891,0x891,0x891,0x891,0x891, +0x891,0x891,0x891,0x891,0x9f6,0x891,0x891,0x891,0x891,0x891,0x891,0x891,0x891,0x891,0x891,0x891, +0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894, +0x894,0x894,0x894,0x894,0x894,0x897,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894, +0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894, +0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x894,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9, 0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a9, -0x912,0x912,0x912,0x912,0x912,0x945,0x945,0x94b,0x94b,0x94b,0x90f,0x90f,0x90f,0x948,0x948,0x948, -0x948,0x948,0x948,0x909,0x909,0x909,0x909,0x909,0x909,0x909,0x909,0x94b,0x94b,0x94b,0x94b,0x94b, -0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f, -0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f, -0x90f,0x90f,0x912,0x912,0x94b,0x94b,0x94b,0x90f,0x90f,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b, -0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f, -0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x94b,0x94b,0x94b,0x94b,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f, -0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x912,0x912,0x912,0x912,0x912,0x912,0x90f,0x90f,0x90f, -0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f, -0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x1467,0x1467,0x91e,0x915,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x915,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x915,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x915,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x915,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b, +0x8a9,0x8a9,0x8a9,0x8a9,0x8a9,0x8a6,0x8a6,0x8a9,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2, +0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2, +0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x8b2,0x91b,0x91b,0x91b,0x91b,0x91b,0x94e,0x94e,0x954, +0x954,0x954,0x918,0x918,0x918,0x951,0x951,0x951,0x951,0x951,0x951,0x912,0x912,0x912,0x912,0x912, +0x912,0x912,0x912,0x954,0x954,0x954,0x954,0x954,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918, +0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918, +0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x1b36,0x1b36,0xd14,0x918,0x918, +0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918, +0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x91b,0x91b, +0x954,0x954,0x954,0x918,0x918,0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x918,0x918,0x918,0x918, 0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918, +0x918,0x918,0x954,0x954,0x954,0x954,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918, +0x918,0x918,0x918,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x918,0x918,0x918,0x918,0x918,0x918,0x918, 0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e, -0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91e,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b,0x91b, -0x91b,0x91b,0x91b,0x91b,0x91e,0x91e,0x91e,0x91e,0x924,0x924,0x924,0x924,0x924,0x924,0xa4a,0xa4a, +0x918,0x918,0x918,0x918,0x918,0x918,0x147f,0x147f,0x927,0x91e,0x924,0x924,0x924,0x924,0x924,0x924, +0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924, +0x924,0x924,0x924,0x91e,0x924,0x924,0x924,0x924,0x924,0x924,0x927,0x927,0x927,0x927,0x927,0x927, +0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927, +0x927,0x927,0x927,0x91e,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924, +0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x91e,0x924,0x924,0x924,0x924,0x924,0x924, +0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927, +0x927,0x927,0x927,0x927,0x927,0x91e,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924, +0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x921,0x921,0x921,0x921, 0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921, -0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0xa47,0xa47,0xaa7,0xaa7,0xaa7,0xaa7, -0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0x924,0x924,0x924,0x924, +0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x921,0x927,0x927,0x927,0x927, +0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927, +0x927,0x927,0x927,0x927,0x927,0x927,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924, +0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x927,0x927,0x927,0x927, +0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927, +0x927,0x927,0x927,0x927,0x927,0x927,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924, 0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924, -0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933, -0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x12c3,0x939,0x939,0x939,0x939, -0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939, -0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93f,0x93c, +0x927,0x927,0x927,0x927,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0xa53,0xa53,0x92a,0x92a,0x92a,0x92a, +0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a, +0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0xa50,0xa50,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0, +0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d, +0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d, +0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, 0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93f, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93f,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93f, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c, -0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93f,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93f,0x93f,0x93c,0x93c,0x93c,0x93c,0x93f, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93f,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93f,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93f,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c, -0x93c,0x93c,0x93c,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x18c3,0x18c3,0x942,0x942,0x942,0x942, +0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x12db,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942, 0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942, -0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x978,0x978,0x978,0x978, -0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0x978,0x978,0x96c,0x978,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c, -0x96c,0x96c,0x96c,0xa2c,0xa32,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19, -0xc5d,0xc5d,0xc5d,0xc5d,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0xad4,0xad4, -0xad4,0xad4,0xad4,0xad4,0xa2c,0xa2c,0xb19,0xbfd,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19, -0xb19,0xd11,0x1005,0x1005,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb31,0xb2e,0xc5d,0xc5d,0xc5d,0xc5d,0x1182, -0xd2c,0x1182,0x10b6,0x10b6,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0x978,0x978,0x978,0x978,0x978,0x978,0x9d2,0x9cf,0x9d2,0x9cf,0x9d2,0x9cf,0xe46,0xe43,0xd32,0xd2f, -0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0x978,0x978,0x978,0x97e,0x97b,0x9d2,0x9cf,0x97e,0x97b,0x97e,0x97b,0x97e,0x97b,0x97e,0x97b,0x97e, -0x97b,0x97e,0x97b,0x97e,0x97b,0x97e,0x97b,0x97e,0x97b,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0x978,0x978,0x978,0x978,0x97e,0x97b,0x97e,0x97b,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0x978,0x978,0x978,0x978,0x97e,0x97b,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0x978,0x978,0x978,0x978,0x984,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x984,0x984,0x984,0x978, -0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978, -0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x981,0x978,0x978,0x978, -0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de, -0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de,0x9de, -0xa2c,0xad4,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xbfd,0xbfd,0xb19,0xb19,0xb19,0xb19, -0xb19,0xb19,0xc5a,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0x1017,0x1017,0x1008, -0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xb19,0xb19, -0xb19,0xb19,0xb19,0xb19,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xe4c,0xe4c,0xd11,0xd11,0xd11, -0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa56,0xa56,0xa56,0xa56,0xa56,0xa44,0xa80,0xa80,0xa80,0xa7a, -0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa7a,0xa80,0xa80,0xa80,0xa80, -0xa5f,0xa5f,0xa7d,0xa7d,0xa7d,0xa7d,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa74,0xb88,0xb88,0xb88,0xb88, -0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb5e,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88, -0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa7a,0xa80, -0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa80,0xa5f,0xa5f,0xa5f, -0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71, -0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71, -0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74, -0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74, -0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e, -0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e, -0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7, +0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x942,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x945,0x945,0x945,0x945, +0x945,0x948,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x948,0x945,0x945,0x948,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x948,0x948,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x945,0x945,0x945,0x945,0x948,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x948,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x948,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x948,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948, +0x945,0x945,0x945,0x945,0x945,0x948,0x948,0x945,0x945,0x945,0x945,0x948,0x945,0x945,0x945,0x945, +0x945,0x948,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x948,0x945,0x945,0x945,0x948,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x948,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x948,0x945, +0x945,0x948,0x945,0x945,0x945,0x945,0x948,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x1827, +0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x18db,0x18db,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b, +0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b, +0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981, +0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x975,0x981, +0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0xa35, +0xa3b,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xc69,0xc69,0xc69,0xc69, +0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd, +0xa35,0xa35,0xb25,0xc09,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xd1d,0x1017,0x1017, +0xb37,0xb37,0xb37,0xb37,0xb37,0xb3d,0xb3a,0xc69,0xc69,0xc69,0xc69,0x1194,0xd38,0x1194,0x10c8,0x10c8, +0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981, +0x981,0x981,0x9db,0x9d8,0x9db,0x9d8,0x9db,0x9d8,0xe52,0xe4f,0xd3e,0xd3b,0x981,0x981,0x981,0x981, +0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981, +0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x987, +0x984,0x9db,0x9d8,0x987,0x984,0x987,0x984,0x987,0x984,0x987,0x984,0x987,0x984,0x987,0x984,0x987, +0x984,0x987,0x984,0x987,0x984,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981, +0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981, +0x987,0x984,0x987,0x984,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981, +0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981, +0x987,0x984,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981, +0x98d,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981, +0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x98d,0x98d,0x98d,0x981,0x981,0x981,0x981,0x981, +0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981, +0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x98a,0x981,0x981,0x981,0x9e7,0x9e7,0x9e7,0x9e7, +0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7, +0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0x9e7,0xa35,0xadd,0xb25,0xb25, +0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xc09,0xc09,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xc66,0xd1d, +0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0x1029,0x1029,0x101a,0xa35,0xa35,0xa35,0xa35, +0xa35,0xa35,0xa35,0xa35,0xa35,0xa35,0xa35,0xa35,0xa35,0xa35,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25, +0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xe58,0xe58,0xd1d,0xd1d,0xd1d,0xa7d,0xa7d,0xa7d,0xa7d, +0xa7d,0xa7d,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,0xa4d,0xa89,0xa89,0xa89,0xa83,0xa89,0xa89,0xa89,0xa89, +0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa83,0xa89,0xa89,0xa89,0xa89,0xa68,0xa68,0xa86,0xa86, +0xa86,0xa86,0xa65,0xa65,0xa65,0xa65,0xa65,0xa7d,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94, +0xb94,0xb94,0xb94,0xb94,0xb6a,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xa89,0xa89,0xa89,0xa89, +0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa83,0xa89,0xa89,0xa89,0xa89,0xa89, +0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa68,0xa68,0xa68,0xa7a,0xa7a,0xa7a,0xa7a, +0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a, +0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7d,0xa7d,0xa7d,0xa7d, +0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d, +0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xaa7,0xaa7,0xaa7,0xaa7, 0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7, -0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8, -0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8, -0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07, -0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07, -0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13, -0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xc57,0xc57,0xc57,0xc57,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e, -0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb25,0xb25, -0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb22,0xbdc,0xd1d,0xd14,0xd29,0xd11,0xb1f,0xb1f,0xd11,0xd11, -0xb4f,0xb4c,0xb4f,0xb4c,0xb4f,0xb4c,0xb4f,0xb4c,0xb4f,0xb4c,0xb4f,0xb4c,0xb4f,0xb4c,0xb4f,0xb4c, -0xb4f,0xb4c,0xb4f,0xb4c,0xb4f,0xb4c,0xb4f,0xb4c,0xb4f,0xb4c,0xb4f,0xb4c,0xb4f,0xb4c,0xb4f,0xb4c, -0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a, -0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a, -0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79, -0xb79,0xb79,0xb79,0xb79,0xb79,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73, -0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76, +0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xab0,0xab0,0xab0,0xab0, +0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0, +0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xab0,0xad1,0xad1,0xad1,0xad1, +0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1, +0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xb13,0xb13,0xb13,0xb13, +0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13, +0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xbeb,0xbeb,0xbeb,0xbeb, +0xbeb,0xbeb,0xbeb,0xbeb,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f, +0xb1f,0xb1f,0xb1f,0xc63,0xc63,0xc63,0xc63,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xb34,0xb34,0xb34,0xb34, +0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb31,0xb31,0xb31,0xb31,0xb31,0xb31, +0xb31,0xb31,0xb2e,0xbe8,0xd29,0xd20,0xd35,0xd1d,0xb2b,0xb2b,0xd1d,0xd1d,0xb5b,0xb58,0xb5b,0xb58, +0xb5b,0xb58,0xb5b,0xb58,0xb5b,0xb58,0xb5b,0xb58,0xb5b,0xb58,0xb5b,0xb58,0xb5b,0xb58,0xb5b,0xb58, +0xb5b,0xb58,0xb5b,0xb58,0xb5b,0xb58,0xb5b,0xb58,0xb5b,0xb58,0xb5b,0xb58,0xb76,0xb76,0xb76,0xb76, 0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76, -0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79, -0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79, +0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb85,0xb85,0xb85,0xb85, +0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85, +0xb85,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb82,0xb82,0xb82,0xb82, +0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82, +0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb85,0xb85,0xb85,0xb85, +0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85, +0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xba0,0xba0,0xba0,0xba0, +0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0, +0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xb8e,0xb94,0xb94,0xb94,0xb94, 0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94, -0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb82, -0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88, -0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb94,0xb94,0xb94,0xb94,0xb94, -0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0x1893, -0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6, -0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0x1890, -0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9, -0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9, -0xbbb,0xbbb,0xc36,0xbbb,0xbbb,0xbbb,0xc39,0xbbb,0xbbb,0xbbb,0xbbb,0xc36,0xbbb,0xbbb,0xbbb,0xbbb, -0xbbb,0xbbb,0xbbb,0xbbb,0xbbb,0xbbb,0xbbb,0xbbb,0xbbb,0xbbb,0xbbb,0xbbb,0xbbb,0xbbb,0xbbb,0xbbb, -0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4, -0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4,0xbc4, -0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca, -0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca, -0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3, -0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3, -0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03, -0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03, -0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c, -0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55, -0xc3c,0xc3c,0xc15,0xc15,0xce1,0xce1,0xce1,0xce1,0xce1,0xce1,0xce1,0xe70,0xe70,0xe73,0xe76,0xe70, -0xe67,0xe6a,0xe6a,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d, -0xc4e,0xc4e,0xd7d,0xd7a,0xd7d,0xd7a,0xd7d,0xd7a,0xd7d,0xd7a,0xd7d,0xd7a,0xd7d,0xd7a,0xd7d,0xd7a, -0xd6b,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b, -0xc5d,0xc5d,0xc5d,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xed6,0x112e,0x112e,0x112e,0x112e,0x10ad,0x10ad,0x10ad, -0x1131,0x10b0,0x10b0,0x1131,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x1512,0x1512,0x1512,0x1512,0x15c9, -0xc5a,0xc5a,0xc5a,0xc5a,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11, -0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c, -0xc78,0xc75,0xc78,0xc78,0xc78,0xc75,0xc75,0xc78,0xc7b,0xc7e,0xc7b,0xc7e,0xc7b,0xd71,0xd71,0xd71, -0xefa,0xd6b,0xd71,0xd6b,0xc6f,0xc72,0xc6f,0xc75,0xd74,0xd74,0xd74,0xd74,0xd86,0xd89,0xefa,0xefa, -0xc87,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3, -0xcf3,0xcf3,0xcf3,0xcf3,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0x1896,0x1896,0x198c, -0xcea,0xcea,0xcea,0xcea,0xc93,0xc99,0xc9c,0xc99,0xc9c,0xc99,0xc9c,0xcd8,0xcdb,0xc99,0xc9c,0xc99, -0xc99,0xc99,0xc9c,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8, -0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcf0,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xced, -0xcea,0xced,0xc93,0xc93,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd, -0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd, -0xcbd,0xcbd,0xcbd,0xcbd,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf, -0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf, -0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0xccf,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed, -0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0x13e3, -0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e9,0x1626,0x1626, -0x1650,0x1626,0x18f6,0x1593,0x114c,0x1038,0xce1,0xce1,0xd02,0xd02,0xd02,0xd02,0xe49,0xd02,0xd02,0xd02, -0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02, -0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02, -0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd0e,0xd0b,0xd0b,0xd83,0xd80,0x10da,0x10d4,0x147f, -0x10d1,0x10ce,0x11af,0x11ac,0x12ae,0x12ae,0x12b4,0x12ae,0x12b4,0x12ae,0x12b4,0x12ae,0x12b4,0x12ae,0x12b4,0x12ae, -0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd11,0xd11,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0x127e,0x127e,0x127e, -0xe4c,0xd11,0xd11,0xd11,0xd11,0x1014,0x1005,0x1005,0x1005,0x1005,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e, -0xd23,0xd23,0xd20,0xd17,0xd20,0xd17,0xd20,0xd17,0xd20,0xd17,0xd26,0xd26,0xd26,0xd26,0xd38,0xd35, -0xe3d,0xfdb,0x117c,0x1179,0x1179,0x117c,0x1176,0x1176,0x1176,0x117c,0x117f,0x117f,0x13bf,0x1281,0x1281,0x127e, -0xd1a,0xd1a,0xd1a,0xd1a,0x1017,0x1017,0x1008,0x1008,0x1008,0x1005,0x1005,0x1005,0x1005,0x1008,0x112e,0x1008, -0x1008,0x1008,0x1005,0x1008,0x1017,0x1005,0x1005,0x1005,0x1008,0x1008,0x1005,0x1005,0x1008,0x1005,0x1005,0x1008, -0x10c2,0x10bf,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd53,0xec4, -0xe7c,0xe7c,0xe7c,0xd4d,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0xe82,0xe82,0xd4a,0xd59, -0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50, -0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50,0xd56,0xd50, -0x129f,0x129c,0x129f,0x129c,0x12a2,0x12a2,0x14ee,0x122a,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b, -0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b, -0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd89,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b, -0xd6b,0xd71,0xd6b,0xd71,0xd6b,0xd71,0xd71,0xd6b,0xe5b,0xe5b,0xe8e,0xda7,0xdaa,0xe8e,0xe8e,0xdb0, -0xdb0,0xdb0,0xdb0,0xdad,0xdad,0xe91,0xe58,0xdb0,0xda1,0xda1,0xda1,0xda1,0xda1,0xda1,0xda1,0xda1, -0xda1,0xda1,0xf03,0xf03,0xf00,0x1047,0xd9e,0xd9e,0xe8e,0xe5b,0xda7,0xdb0,0xdb0,0xe58,0xe58,0xda4, -0xda4,0xdad,0xdad,0xdad,0xdad,0xdad,0xe58,0xe58,0xe58,0xe8b,0xe8b,0xe8b,0xe8b,0xe5b,0xe5b,0xe5b, -0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4, -0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4, -0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdda,0xdda,0xdda,0xdda,0xdda,0xdda,0xdda,0xdda, -0xdda,0xdda,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd, -0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0xea0,0xea0,0xea0,0xea0,0xea0,0xea3, -0xea3,0xea3,0xe40,0xde0,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28, -0xe28,0xe28,0xe28,0xe28,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec, -0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec, -0xdec,0xdec,0xdec,0xdec,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8, -0xdfe,0xdf2,0xe04,0xe01,0xdfb,0xdfb,0xdfb,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8, +0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xba0,0xba0,0xba0,0xba0,0xba0,0xbb5,0xbb5,0xbb5,0xbb5, +0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0x18ab,0xbb2,0xbb2,0xbb2,0xbb2, +0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2, +0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0xbb2,0x18a8,0xbb5,0xbb5,0xbb5,0xbb5, +0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5, +0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbc7,0xbc7,0xc42,0xbc7, +0xbc7,0xbc7,0xc45,0xbc7,0xbc7,0xbc7,0xbc7,0xc42,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7, +0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbd0,0xbd0,0xbd0,0xbd0, +0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0, +0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd6,0xbd6,0xbd6,0xbd6, +0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6, +0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xbdf,0xbdf,0xbdf,0xbdf, +0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf, +0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xc0f,0xc0f,0xc0f,0xc0f, +0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f, +0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc18,0xc18,0xc18,0xc18, +0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xe61,0xe61,0xe61,0xe61, +0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xc48,0xc48,0xc21,0xc21, +0xced,0xced,0xced,0xced,0xced,0xced,0xced,0xe7f,0xe7f,0xe82,0xe85,0xe7f,0xe76,0xe79,0xe79,0xe7c, +0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xc5a,0xc5a,0xd89,0xd86, +0xd89,0xd86,0xd89,0xd86,0xd89,0xd86,0xd89,0xd86,0xd89,0xd86,0xd89,0xd86,0xd77,0xd77,0xd7d,0xd77, +0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77,0xc69,0xc69,0xc69,0xc66, +0xc66,0xc66,0xc66,0xc66,0xee8,0x1140,0x1140,0x1140,0x1140,0x10bf,0x10bf,0x10bf,0x1143,0x10c2,0x10c2,0x1143, +0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x152a,0x152a,0x152a,0x152a,0x15e1,0xc66,0xc66,0xc66,0xc66, +0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd38,0xd38,0xd38,0xd38, +0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xc84,0xc81,0xc84,0xc84, +0xc84,0xc81,0xc81,0xc84,0xc87,0xc8a,0xc87,0xc8a,0xc87,0xd7d,0xd7d,0xd7d,0xf0c,0xd77,0xd7d,0xd77, +0xc7b,0xc7e,0xc7b,0xc81,0xd80,0xd80,0xd80,0xd80,0xd92,0xd95,0xf0c,0xf0c,0xc93,0xc96,0xc96,0xc96, +0xc96,0xc96,0xc96,0xc96,0xc96,0xc96,0xc96,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff, +0xc96,0xc96,0xc96,0xc96,0xc96,0xc96,0xc96,0xc96,0xc96,0x18ae,0x18ae,0x19a4,0xcf6,0xcf6,0xcf6,0xcf6, +0xc9f,0xca5,0xca8,0xca5,0xca8,0xca5,0xca8,0xce4,0xce7,0xca5,0xca8,0xca5,0xca5,0xca5,0xca8,0xce4, +0xce4,0xce4,0xce4,0xce4,0xce4,0xce4,0xce4,0xce4,0xce4,0xce4,0xce4,0xce4,0xce4,0xce4,0xce4,0xce4, +0xce4,0xce4,0xce4,0xce4,0xcfc,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf9,0xcf6,0xcf9,0xc9f,0xc9f, +0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9, +0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9, +0xcdb,0xcdb,0xcdb,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1b00, +0xcd8,0xcd8,0xcd8,0xcd8,0x1302,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00, +0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb, +0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb, +0xcdb,0xcdb,0xcdb,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305,0x1305, +0x1305,0x1305,0x1305,0x1305,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0x13fb,0x13fb,0x13fb,0x13fb,0x13fb, +0x13fb,0x13fb,0x13fb,0x13fb,0x13fb,0x13fb,0x13fb,0x13fb,0x13fb,0x1401,0x163b,0x163b,0x1665,0x163b,0x190e,0x15ab, +0x115e,0x104a,0xced,0xced,0xd0e,0xd0e,0xd0e,0xd0e,0xe55,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e, +0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e, +0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd7d,0xd77,0xd7d,0xd77, +0xd7d,0xd77,0xd7d,0xd77,0xd1a,0xd17,0xd17,0xd8f,0xd8c,0x10ec,0x10e6,0x1497,0x10e3,0x10e0,0x11c1,0x11be, +0x12c6,0x12c6,0x12cc,0x12c6,0x12cc,0x12c6,0x12cc,0x12c6,0x12cc,0x12c6,0x12cc,0x12c6,0xd38,0xd38,0xd38,0xd38, +0xd38,0xd1d,0xd1d,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0x1296,0x1296,0x1296,0xe58,0xd1d,0xd1d,0xd1d, +0xd1d,0x1026,0x1017,0x1017,0x1017,0x1017,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0xd2f,0xd2f,0xd2c,0xd23, +0xd2c,0xd23,0xd2c,0xd23,0xd2c,0xd23,0xd32,0xd32,0xd32,0xd32,0xd44,0xd41,0xe49,0xfed,0x118e,0x118b, +0x118b,0x118e,0x1188,0x1188,0x1188,0x118e,0x1191,0x1191,0x13d7,0x1299,0x1299,0x1296,0xd26,0xd26,0xd26,0xd26, +0x1029,0x1029,0x101a,0x101a,0x101a,0x1017,0x1017,0x1017,0x1017,0x101a,0x1140,0x101a,0x101a,0x101a,0x1017,0x101a, +0x1029,0x1017,0x1017,0x1017,0x101a,0x101a,0x1017,0x1017,0x101a,0x1017,0x1017,0x101a,0x10d4,0x10d1,0xd62,0xd5c, +0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd5f,0xed6,0xe8e,0xe8e,0xe8e,0xd59, +0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0xe94,0xe94,0xd56,0xd65,0xd62,0xd5c,0xd62,0xd5c, +0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c, +0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0xd62,0xd5c,0x12b7,0x12b4,0x12b7,0x12b4, +0x12ba,0x12ba,0x1506,0x123f,0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77, +0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77,0xd7d,0xd77, +0xd7d,0xd77,0xd7d,0xd77,0xd95,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd7d,0xd77,0xd7d, +0xd77,0xd7d,0xd7d,0xd77,0xe67,0xe67,0xea0,0xdb3,0xdb6,0xea0,0xea0,0xdbc,0xdbc,0xdbc,0xdbc,0xdb9, +0xdb9,0xea3,0xe64,0xdbc,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xdad,0xf15,0xf15, +0xf12,0x1059,0xdaa,0xdaa,0xea0,0xe67,0xdb3,0xdbc,0xdbc,0xe64,0xe64,0xdb0,0xdb0,0xdb9,0xdb9,0xdb9, +0xdb9,0xdb9,0xe64,0xe64,0xe64,0xe9d,0xe9d,0xe9d,0xe9d,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0, +0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0, +0xde0,0xde0,0xde0,0xde0,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde9,0xde9, +0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9, +0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb5,0xeb5,0xeb5,0xe4c,0xdec, +0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34, 0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8, -0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07, -0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07, -0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16, -0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16, -0xe19,0xe19,0xe19,0xe1c,0xe19,0xe19,0xe1f,0xe1f,0xe2e,0xe2e,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31, -0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31, -0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e, -0xe2e,0xe2e,0xe2e,0xe2e,0xe61,0xe3a,0xeb8,0xeb8,0xeb8,0xeb8,0xe3a,0xe3a,0xeb8,0xeb8,0xebb,0x1251, -0x1230,0x1230,0xe61,0xe61,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0x11ca,0x121b, -0x121b,0x121b,0x11ca,0x11ca,0xeb8,0xeb8,0xe3a,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61, -0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61, -0xe61,0xe61,0xe61,0xe61,0xe52,0xe52,0xe52,0xe52,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d, -0x1218,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614, -0x1614,0x1614,0x1614,0x1614,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f, -0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f, -0xe7f,0xe7f,0xe7f,0xe7f,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff6, -0xff6,0xff6,0xed3,0x1659,0x111c,0x1002,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c, -0x111c,0x1002,0x111c,0x1002,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044, -0x1044,0x1044,0x1044,0x1044,0x1044,0x1098,0xef1,0xfed,0xef1,0xef1,0xef1,0xef1,0xeeb,0xeeb,0xeeb,0xef1, -0x1476,0x1479,0x166e,0x16fe,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c, -0x102c,0x102c,0x102c,0x102c,0xf0c,0x102c,0x102c,0x102c,0xf09,0xf09,0xf09,0xefd,0xefd,0xefd,0x102c,0xf06, -0x13fb,0x12bd,0x13da,0x13da,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12, -0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12, -0xf12,0xf12,0xf12,0xf12,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b, -0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b, -0xf1b,0xf1b,0xf1b,0xf1b,0xf21,0xf21,0xf21,0xf1e,0xf1e,0xf1e,0xf1b,0xf1b,0xf1b,0xf1b,0xf1e,0xf1b, -0xf1b,0xf1b,0xf21,0xf1e,0xf21,0xf1e,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b, -0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b, -0xf1b,0xf21,0xf1e,0xf1e,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b, -0xf1b,0xf1b,0xf1b,0x191a,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1755,0x174f,0x1911,0x1911,0x1911, -0x1914,0x190e,0x1914,0x190e,0x104a,0x104a,0x104a,0xf2d,0xf30,0xf30,0xf30,0xf30,0xf30,0x102f,0x102f,0x102f, -0xf30,0xf30,0xf30,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f, -0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x104d,0xf2d,0xf2d,0x104a,0x104a,0x104a,0x104a,0xf2d,0xf2d, -0x104a,0x104a,0xf2d,0xf2d,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36, -0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36, -0xf36,0xf36,0xf36,0xf36,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035, -0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0xf57, -0xf57,0xf57,0xf57,0xf57,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c, -0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c,0xf6c, -0xf6c,0xf6c,0xf6c,0xf6c,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf78, -0xf75,0xf75,0xf75,0xf75,0xf72,0xf72,0xf72,0x105f,0x105f,0x105f,0x105f,0xf72,0xf72,0x1065,0x1062,0xf6f, -0xf6f,0xf7e,0xf7b,0xf7b,0x105f,0x105f,0xf72,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75, -0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf78,0xf75, -0xf78,0xf75,0xf75,0xf75,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93, -0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0xf93,0x106b,0x106b,0x106e,0x106e,0xf93,0x106b, -0x106b,0x106b,0x106b,0x106b,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f, -0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f, -0xf9f,0xf9f,0xf9f,0xf9f,0x1071,0xf9f,0x1071,0x1071,0x1071,0xfa8,0xfa8,0x1071,0x1071,0xfa8,0xf9f,0xfa8, -0xfa8,0xf9f,0x1071,0x1074,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1, +0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8, +0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe0a,0xdfe,0xe10,0xe0d, +0xe07,0xe07,0xe07,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04, +0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04,0xe04, +0xe04,0xe04,0xe04,0xe04,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13, +0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13, +0xe13,0xe13,0xe13,0xe13,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22, +0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe25,0xe25,0xe25,0xe28, +0xe25,0xe25,0xe2b,0xe2b,0xe3a,0xe3a,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d, +0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d, +0xe3d,0xe3d,0xe3d,0xe3d,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a, +0xe6d,0xe46,0xeca,0xeca,0xeca,0xeca,0xe46,0xe46,0xeca,0xeca,0xecd,0x1266,0x1245,0x1245,0xe70,0xe70, +0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0x11dc,0x122a,0x122a,0x122a,0x11dc,0x11dc, +0xeca,0xeca,0xe46,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d, +0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d,0xe6d, +0xe5e,0xe5e,0xe5e,0xe5e,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x1227,0x14fa,0x14fa,0x14fa, +0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629, +0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91, +0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91, +0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1008,0x1008,0x1008,0xee5,0x1671, +0x112e,0x1014,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x1014,0x112e,0x1014, +0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056, +0x1056,0x10aa,0xf03,0xfff,0xf03,0xf03,0xf03,0xf03,0xefd,0xefd,0xefd,0xf03,0x148e,0x1491,0x1686,0x1716, +0x103e,0x103e,0x103e,0x103e,0x103e,0x103e,0x103e,0x103e,0x103e,0x103e,0x103e,0x103e,0x103e,0x103e,0x103e,0x103e, +0xf1e,0x103e,0x103e,0x103e,0xf1b,0xf1b,0xf1b,0xf0f,0xf0f,0xf0f,0x103e,0xf18,0x1413,0x12d5,0x13f2,0x13f2, +0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24, +0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24, +0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d, +0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d, +0xf33,0xf33,0xf33,0xf30,0xf30,0xf30,0xf2d,0xf2d,0xf2d,0xf2d,0xf30,0xf2d,0xf2d,0xf2d,0xf33,0xf30, +0xf33,0xf30,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d, +0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf33,0xf30,0xf30, +0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0x1932, +0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176d,0x1767,0x1929,0x1929,0x1929,0x192c,0x1926,0x192c,0x1926, +0x105c,0x105c,0x105c,0xf3f,0xf42,0xf42,0xf42,0xf42,0xf42,0x1041,0x1041,0x1041,0xf42,0xf42,0xf42,0x1041, +0x1041,0x1041,0x1041,0x1041,0x1041,0x1041,0x1041,0x1041,0x1041,0x1041,0x1041,0x1041,0x1041,0x1041,0x1041,0x1041, +0x1041,0x1041,0x1041,0x105f,0xf3f,0xf3f,0x105c,0x105c,0x105c,0x105c,0xf3f,0xf3f,0x105c,0x105c,0xf3f,0xf3f, +0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48, +0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48, +0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047, +0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0xf69,0xf69,0xf69,0xf69,0xf69, +0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e, +0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e,0xf7e, +0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf8a,0xf87,0xf87,0xf87,0xf87, +0xf84,0xf84,0xf84,0x1071,0x1071,0x1071,0x1071,0xf84,0xf84,0x1077,0x1074,0xf81,0xf81,0xf90,0xf8d,0xf8d, +0x1071,0x1071,0xf84,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87, +0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf8a,0xf87,0xf8a,0xf87,0xf87,0xf87, +0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5, +0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0x107d,0x107d,0x1080,0x1080,0xfa5,0x107d,0x107d,0x107d,0x107d,0x107d, +0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1, 0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1, -0xfb1,0xfb1,0xfb1,0xfb1,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba, -0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba, -0xfba,0xfba,0xfb7,0xfbd,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3, +0x1083,0xfb1,0x1083,0x1083,0x1083,0xfba,0xfba,0x1083,0x1083,0xfba,0xfb1,0xfba,0xfba,0xfb1,0x1083,0x1086, 0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3, -0xfc3,0xfc0,0xfc0,0xfc0,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0xff0,0xff0, -0xff0,0xff0,0x111f,0x1113,0xffc,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x1581, -0x1581,0x1581,0x1581,0x1581,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0x1263, -0x1263,0x17bb,0x17bb,0x17bb,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3, -0xff3,0xff3,0xff3,0xff3,0x111c,0x111c,0x1002,0x111c,0x111c,0x111c,0x1002,0x111c,0x111c,0x111c,0xffc,0xffc, -0xffc,0xffc,0xffc,0x1116,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0xfff,0x1119,0x1119,0x1119,0x1119, -0x1119,0x1119,0x1119,0xfff,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1173,0x1173, -0x1728,0x17bb,0x17bb,0x17bb,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0xfff,0x1119,0xfff, -0xfff,0x1119,0x1119,0xfff,0x1008,0x1008,0x10ad,0x1005,0x10ad,0x10ad,0x10ad,0x10ad,0x1005,0x1005,0x1017,0x1005, -0x1005,0x1005,0x1005,0x1005,0x1005,0x1008,0x1017,0x1017,0x1008,0x1017,0x1005,0x1008,0x1008,0x100b,0x1017,0x1005, -0x1005,0x1017,0x1008,0x1008,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d, -0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d, -0x101d,0x101d,0x101d,0x101d,0x101d,0x18c3,0x18c3,0x18c3,0x18c3,0x193b,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85, -0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032, -0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032, -0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1, -0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1, -0x18fc,0x18fc,0x18fc,0x1a34,0x1a34,0x1a34,0x1a34,0x18fc,0x18fc,0x18fc,0x18fc,0x18fc,0x10d1,0x10ce,0x10d1,0x10ce, -0x10d1,0x10ce,0x10d1,0x10ce,0x10d1,0x10ce,0x11b2,0x12b4,0x12b4,0x12b4,0x152a,0x167d,0x12b4,0x12b4,0x1482,0x1482, -0x1482,0x147c,0x1482,0x147c,0x1683,0x1680,0x173a,0x1737,0x173a,0x1737,0x173a,0x1737,0x10f2,0x10f2,0x10f2,0x10f2, -0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2, -0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10fe,0x1167,0x10fe,0x1104, -0x1104,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101, -0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1167,0x1167,0x1167,0x1167, -0x1167,0x1167,0x1167,0x1167,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110, -0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110, -0x1110,0x1110,0x1110,0x1110,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1122,0x1122,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1122,0x1125,0x1125,0x1125,0x1122,0x1125,0x1122,0x1125,0x1122,0x1125,0x1125,0x1125,0x1125,0x1125,0x1128,0x1125, -0x1125,0x1125,0x1125,0x1122,0x1125,0x1122,0x1122,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1122,0x1122,0x1122,0x1122,0x1122, -0x1122,0x1122,0x1122,0x1122,0x1122,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1266,0x1266, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x14dc,0x14dc,0x14dc, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1269,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1269,0x14dc,0x14dc,0x1125,0x1125,0x1125,0x1125,0x1125,0x1128,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1269,0x1269,0x1269,0x1269, -0x1269,0x1269,0x1269,0x1269,0x1266,0x1266,0x1269,0x1269,0x1125,0x1125,0x1128,0x1128,0x1128,0x13ce,0x1125,0x1128, -0x1125,0x1125,0x1128,0x1278,0x1278,0x1269,0x1269,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x1269,0x1269,0x1269,0x1269, -0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1269,0x1269,0x1269,0x13ce,0x1269,0x1269,0x1269, -0x14dc,0x14dc,0x14dc,0x150c,0x150c,0x150c,0x150c,0x150c,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1269,0x1125,0x1269,0x1128,0x1128,0x1125,0x1125,0x1128,0x1128, -0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128, -0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1125,0x1125,0x1125, -0x1128,0x1125,0x1125,0x1125,0x1125,0x1128,0x1128,0x1128,0x1125,0x1128,0x1128,0x1128,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1128,0x1125,0x1128,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x13ce,0x1125,0x1125,0x1125,0x1125,0x1269,0x1269,0x14dc,0x1170,0x1170,0x1170,0x1170,0x1266,0x1266,0x1266,0x1266, -0x1266,0x1266,0x1269,0x14dc,0x14dc,0x14dc,0x14dc,0x1464,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269, -0x1269,0x1269,0x1269,0x1269,0x1278,0x1278,0x1269,0x1269,0x1269,0x1269,0x1587,0x1269,0x1269,0x1269,0x1269,0x1269, -0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269, -0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1269,0x1125,0x1125,0x1125,0x1125,0x1125,0x1212,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1212,0x1125,0x1125, -0x1125,0x1212,0x1125,0x1212,0x1125,0x1212,0x1125,0x1212,0x1125,0x1125,0x1125,0x1212,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1212,0x1212,0x1125,0x1125,0x1125,0x1125,0x1212,0x1125,0x1212,0x1212,0x1125,0x1125,0x1125,0x1125, -0x1212,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x13ce,0x13ce,0x14dc, -0x14dc,0x1128,0x1128,0x1128,0x1125,0x1125,0x1125,0x1128,0x1128,0x1128,0x1128,0x1128,0x1266,0x1266,0x1266,0x1266, -0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1125,0x1125,0x1125,0x1128, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1128,0x1128,0x1128,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x113a,0x113a,0x113a,0x113a, -0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a, -0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x1140,0x113d,0x1617,0x1617, -0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617, -0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x118b,0x1293,0x118b,0x118b, -0x118b,0x118b,0x118b,0x118b,0x118b,0x118b,0x1188,0x1188,0x1188,0x1290,0x1290,0x1290,0x1290,0x1290,0x1293,0x146d, -0x146d,0x1857,0x151b,0x151b,0x151b,0x151b,0x151b,0x151e,0x151e,0x151e,0x17ca,0x17ca,0x11bb,0x11bb,0x11bb,0x11bb, -0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb, -0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11be,0x11be,0x11be,0x11be, -0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be, -0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x1758,0x11c1,0x11c1,0x11c1,0x11c1, -0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1, -0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x1242,0x11f4,0x11f7,0x11f7, -0x11f4,0x11fa,0x11fa,0x11e8,0x11eb,0x14fd,0x1500,0x1500,0x1500,0x1365,0x17df,0x182a,0x11ee,0x11ee,0x11ee,0x11ee, -0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x1362,0x14a6,0x14a9,0x14a3,0x14ac,0x14ac,0x123f,0x123f,0x11f1,0x11f4, -0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4, -0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f1, -0x11f1,0x11f1,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x11f1,0x1209,0x1209,0x1209,0x1209, -0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209, -0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1236,0x1236,0x1236,0x1221, -0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221, -0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1596,0x1596,0x1518,0x14eb, -0x1227,0x1227,0x1227,0x1227,0x1227,0x1227,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1227,0x1227,0x1227,0x1227, -0x1227,0x1227,0x1227,0x1227,0x1227,0x1227,0x1227,0x1227,0x1227,0x1227,0x1227,0x13ef,0x1269,0x1269,0x1269,0x1269, -0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269, -0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1269,0x1269,0x1269,0x1269,0x1266,0x1266,0x1266,0x1266, -0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266, -0x1266,0x1266,0x1275,0x1275,0x1275,0x126c,0x126c,0x126c,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266, -0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266, -0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269, -0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1278,0x1269,0x1269,0x1269,0x1269,0x13d1,0x13d1,0x1269, -0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1584,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269, -0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269, -0x1269,0x1269,0x1269,0x1269,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae, -0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x127b, -0x12b7,0x12b7,0x12b7,0x12b7,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e, -0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x1a3d,0x17c4,0x127e,0x127e,0x127e,0x127e, +0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3, +0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc, +0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfc9,0xfcf, +0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5, +0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xfd2,0xfd2,0xfd2, +0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x1002,0x1002,0x1002,0x1002,0x1131,0x1125, +0x100e,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1599,0x1599,0x1599,0x1599,0x1599, +0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x127b,0x127b,0x17d3,0x17d3,0x17d3, +0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005, +0x112e,0x112e,0x1014,0x112e,0x112e,0x112e,0x1014,0x112e,0x112e,0x112e,0x100e,0x100e,0x100e,0x100e,0x100e,0x1128, +0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x1011,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x1011, +0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x1185,0x1185,0x1740,0x17d3,0x17d3,0x17d3, +0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x1011,0x112b,0x1011,0x1011,0x112b,0x112b,0x1011, +0x101a,0x101a,0x10bf,0x1017,0x10bf,0x10bf,0x10bf,0x10bf,0x1017,0x1017,0x1029,0x1017,0x1017,0x1017,0x1017,0x1017, +0x1017,0x101a,0x1029,0x1029,0x101a,0x1029,0x1017,0x101a,0x101a,0x101d,0x1029,0x1017,0x1017,0x1029,0x101a,0x101a, +0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f, +0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f, +0x102f,0x18db,0x18db,0x18db,0x18db,0x1953,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1044,0x1044,0x1044,0x1044, +0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044, +0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x10b3,0x10b3,0x10b3,0x10b3, +0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3, +0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x1914,0x1914,0x1914,0x1a4f, +0x1a4f,0x1a4f,0x1a4f,0x1914,0x1914,0x1914,0x1914,0x1914,0x10e3,0x10e0,0x10e3,0x10e0,0x10e3,0x10e0,0x10e3,0x10e0, +0x10e3,0x10e0,0x11c4,0x12cc,0x12cc,0x12cc,0x1542,0x1695,0x12cc,0x12cc,0x149a,0x149a,0x149a,0x1494,0x149a,0x1494, +0x169b,0x1698,0x1752,0x174f,0x1752,0x174f,0x1752,0x174f,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104, +0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104, +0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1110,0x1179,0x1110,0x1116,0x1116,0x1113,0x1113,0x1113, +0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113, +0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179, +0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122, +0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1134,0x1134,0x1137,0x1137,0x1137,0x1137,0x1137,0x1134,0x1137,0x1137,0x1137, +0x1134,0x1137,0x1134,0x1137,0x1134,0x1137,0x1137,0x1137,0x1137,0x1137,0x113a,0x1137,0x1137,0x1137,0x1137,0x1134, +0x1137,0x1134,0x1134,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1134,0x1134,0x1134,0x1134,0x1134,0x1134,0x1134,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1134,0x1134,0x1134,0x1134,0x1134,0x1134,0x1134,0x1134,0x1134, +0x1134,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1134,0x1134, +0x1134,0x1134,0x1134,0x1134,0x1134,0x1134,0x1134,0x1134,0x1134,0x1134,0x127e,0x127e,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1281,0x1281,0x1281, +0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x14f4,0x14f4,0x14f4,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1281,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1281,0x14f4,0x14f4,0x1137,0x1137,0x1137,0x1137,0x1137,0x113a,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281, +0x127e,0x127e,0x1281,0x1281,0x1137,0x1137,0x113a,0x113a,0x113a,0x13e6,0x1137,0x113a,0x1137,0x1137,0x113a,0x1290, +0x1290,0x1281,0x1281,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281, +0x1281,0x1281,0x1281,0x1281,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1281,0x1281,0x1281,0x13e6,0x1281,0x1281,0x1281,0x14f4,0x14f4,0x14f4,0x1524, +0x1524,0x1524,0x1524,0x1524,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1281,0x1137,0x1281,0x113a,0x113a,0x1137,0x1137,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a, +0x113a,0x113a,0x113a,0x113a,0x113a,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a, +0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,0x1137,0x1137,0x1137,0x113a,0x1137,0x1137,0x1137, +0x1137,0x113a,0x113a,0x113a,0x1137,0x113a,0x113a,0x113a,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x113a, +0x1137,0x113a,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x13e6,0x1137,0x1137,0x1137, +0x1137,0x1281,0x1281,0x14f4,0x1182,0x1182,0x1182,0x1182,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x1281,0x14f4, +0x14f4,0x14f4,0x14f4,0x147c,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281, +0x1290,0x1290,0x1281,0x1281,0x1281,0x1281,0x159f,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281, +0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x127e,0x127e,0x127e,0x127e, +0x127e,0x127e,0x1281,0x1137,0x1137,0x1137,0x1137,0x1137,0x1221,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1221,0x1137,0x1137,0x1137,0x1221,0x1137,0x1221, +0x1137,0x1221,0x1137,0x1221,0x1137,0x1137,0x1137,0x1221,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1221,0x1221, +0x1137,0x1137,0x1137,0x1137,0x1221,0x1137,0x1221,0x1221,0x1137,0x1137,0x1137,0x1137,0x1221,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x13e6,0x13e6,0x14f4,0x14f4,0x113a,0x113a,0x113a, +0x1137,0x1137,0x1137,0x113a,0x113a,0x113a,0x113a,0x113a,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e, +0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x1137,0x1137,0x1137,0x113a,0x1137,0x1137,0x1137,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x113a,0x113a,0x113a,0x1137, +0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c, +0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c, +0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x1152,0x114f,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c, +0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c, +0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x119d,0x12ab,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d, +0x119d,0x119d,0x119a,0x119a,0x119a,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12ab,0x1485,0x1485,0x186f,0x1533,0x1533, +0x1533,0x1533,0x1533,0x1536,0x1536,0x1536,0x17e2,0x17e2,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd, +0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd, +0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11cd,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0, +0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0, +0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x1770,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3, +0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3, +0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x1257,0x1206,0x1209,0x1209,0x1206,0x120c,0x120c,0x11fa, +0x11fd,0x1515,0x1518,0x1518,0x1518,0x137d,0x17f7,0x1842,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200, +0x1200,0x1200,0x137a,0x14be,0x14c1,0x14bb,0x14c4,0x14c4,0x1254,0x1254,0x1203,0x1206,0x1206,0x1206,0x1206,0x1206, +0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206, +0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1203,0x1203,0x1203,0x1254,0x1254, +0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x1203,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b, +0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b, +0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x124b,0x124b,0x124b,0x1230,0x1230,0x1230,0x1230,0x1230, +0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230, +0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x15ae,0x15ae,0x1530,0x1503,0x1239,0x1239,0x1239,0x1239, +0x1239,0x1239,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1236,0x1236,0x1236,0x1236,0x1239,0x1239,0x1239,0x1239, +0x123c,0x1239,0x1239,0x123c,0x1239,0x1239,0x1239,0x1407,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281, +0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x127e,0x127e,0x127e,0x127e, +0x127e,0x127e,0x127e,0x127e,0x1281,0x1281,0x1281,0x1281,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e, +0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x128d,0x128d, +0x128d,0x1284,0x1284,0x1284,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e, 0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e, -0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x1662,0x1662,0x1662,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e, -0x127e,0x127e,0x127e,0x127e,0x127e,0x172b,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x15c9,0x1662, -0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x12db,0x12db,0x12db,0x12db, -0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x1404,0x1404,0x1404,0x1404, -0x1404,0x1404,0x1404,0x12e1,0x12e1,0x12d5,0x12d2,0x12d2,0x12d2,0x12d2,0x12d2,0x12d2,0x12db,0x12db,0x12db,0x12db, -0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db, -0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12e4,0x12e4,0x12e4,0x12e4, -0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4, -0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12f9,0x12f9,0x12f9,0x12f9, -0x12f9,0x12f9,0x12f9,0x12f9,0x12f0,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9, -0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x130e,0x130e,0x130e,0x130e, -0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e, -0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x130e,0x1314,0x1314,0x1314,0x1314, -0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314, -0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x132c,0x132c,0x132c,0x132c, +0x127e,0x127e,0x127e,0x127e,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281, +0x1281,0x1281,0x1281,0x1281,0x1290,0x1281,0x1281,0x1281,0x1281,0x13e9,0x13e9,0x1281,0x1281,0x1281,0x1281,0x1281, +0x1281,0x1281,0x1281,0x1281,0x159c,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281, +0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281, +0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6, +0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x1293,0x12cf,0x12cf,0x12cf,0x12cf, +0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296, +0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1a58,0x17dc,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296, +0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296, +0x1296,0x1296,0x167a,0x167a,0x167a,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296, +0x1296,0x1743,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x15e1,0x167a,0x167a,0x167a,0x167a,0x167a, +0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3, +0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x141c,0x141c,0x141c,0x141c,0x141c,0x141c,0x141c,0x12f9, +0x12f9,0x12ed,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3, +0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3, +0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc, +0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc, +0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311, +0x1308,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311, +0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326, +0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326, +0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x1326,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c, 0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c, -0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x1332,0x1332,0x1332,0x1332, -0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332, -0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x132f,0x132f,0x132f,0x133e,0x133e,0x133e,0x133e, -0x133e,0x133e,0x133e,0x133e,0x133e,0x133e,0x133e,0x133e,0x133e,0x133e,0x133e,0x133e,0x133e,0x133e,0x133e,0x133e, -0x133e,0x133e,0x133e,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x1347,0x1347,0x1347,0x1347, -0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347, -0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1422,0x1350,0x1350,0x1350,0x1350, -0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350, -0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1356,0x1356,0x1356,0x1356, -0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356, -0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1371,0x1371,0x1371,0x1371, -0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x136e,0x136e,0x136e,0x142b,0x142b,0x142b,0x136e,0x136e, -0x142b,0x1434,0x142e,0x1431,0x1374,0x1374,0x136b,0x1374,0x1374,0x1368,0x15a2,0x191d,0x1383,0x1383,0x1383,0x1383, -0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1437,0x137d,0x137d,0x1437, -0x1437,0x1437,0x1437,0x1437,0x1437,0x137d,0x1437,0x1380,0x1380,0x1437,0x1380,0x1437,0x1383,0x1383,0x1383,0x1383, -0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383, -0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1389,0x1389,0x1389,0x1389, -0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389, -0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x139e,0x139e,0x139e,0x139e, -0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139b,0x139b,0x139b,0x1443, -0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x139b,0x139b,0x1443,0x139b,0x1446,0x139e,0x139e,0x139e,0x139e, -0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e, -0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x13a4,0x13a4,0x13a4,0x13a4, -0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, -0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13b6,0x13b6,0x13b6,0x13b6, +0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x132c,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344, +0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344, +0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a, +0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a, +0x134a,0x134a,0x134a,0x134a,0x134a,0x1347,0x1347,0x1347,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356, +0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1356,0x1353, +0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f, +0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f, +0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x143a,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368, +0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368, +0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e, +0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e, +0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389, +0x1389,0x1389,0x1389,0x1389,0x1386,0x1386,0x1386,0x1443,0x1443,0x1443,0x1386,0x1386,0x1443,0x144c,0x1446,0x1449, +0x138c,0x138c,0x1383,0x138c,0x138c,0x1380,0x15ba,0x1935,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b, +0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x144f,0x1395,0x1395,0x144f,0x144f,0x144f,0x144f,0x144f, +0x144f,0x1395,0x144f,0x1398,0x1398,0x144f,0x1398,0x144f,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b, +0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b, +0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1, +0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1, +0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6, +0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b3,0x13b3,0x13b3,0x145b,0x145b,0x145b,0x145b,0x145b, +0x145b,0x145b,0x145b,0x13b3,0x13b3,0x145b,0x13b3,0x145e,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6, 0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6, -0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x1662,0x1662,0x1662,0x1662, -0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x146a,0x146a,0x146a,0x146a,0x1662,0x1662,0x1662,0x1662, -0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x172b,0x1470,0x1470,0x1470,0x1470, -0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470, -0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x148b,0x148b,0x148b,0x148b, -0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b, -0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148e,0x148e,0x148e,0x148e, -0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e, -0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x1491,0x1491,0x1491,0x1491, -0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491, -0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1494,0x1494,0x1494,0x1494, -0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494, -0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x14f7,0x14f7,0x14f7,0x14f7, -0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7, -0x14f7,0x14f7,0x14f7,0x1494,0x1494,0x1494,0x1494,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7, -0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x14f7,0x1494,0x1494, -0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0, -0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0, -0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14a0,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af, -0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af, -0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14b5,0x14b2,0x14af,0x14af,0x14af,0x14af, -0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x15c0,0x15c0,0x15c0,0x15c0, -0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x1809,0x1791,0x1791,0x1794,0x14dc,0x14dc,0x14dc,0x14dc, -0x14dc,0x14dc,0x14dc,0x14dc,0x14df,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x160e,0x14dc,0x14dc,0x14dc,0x14dc, -0x14dc,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x160b,0x160b, -0x160b,0x160b,0x160b,0x160b,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x14dc,0x16e3,0x16e3,0x1791, -0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1806,0x18bd,0x1794,0x1794,0x1794,0x160b,0x160e,0x160e,0x160e, -0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160b,0x160b,0x14e2,0x14e2,0x14e2,0x14e2, -0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2, -0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14e2,0x14f7,0x14f7,0x14f7,0x14f7, -0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7, -0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x1584,0x1584,0x1584,0x1584, -0x1584,0x1584,0x1587,0x1584,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x1587,0x160e,0x160e,0x1587, -0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1584,0x150f,0x1587,0x1587,0x1587,0x1791,0x1584,0x1584,0x1584,0x1584, -0x1584,0x1584,0x150f,0x1584,0x1584,0x1584,0x1584,0x1584,0x160b,0x16e3,0x16e3,0x16e3,0x1584,0x1584,0x1584,0x1584, -0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x1584,0x160b,0x153f,0x153f,0x153c,0x153c, -0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c, -0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153f,0x153f,0x153f,0x153f, -0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f, -0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x1572,0x1572,0x1572,0x1572, -0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572, -0x1572,0x156f,0x156f,0x156f,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x1572,0x1572,0x1572,0x1572, -0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572, -0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x158d,0x158d,0x158d,0x158d, -0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d, -0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x16ef,0x16ef,0x16ef, -0x16ef,0x16ef,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88, -0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d,0x158d, -0x158d,0x158d,0x158d,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812, -0x17ca,0x17ca,0x17ca,0x17c7,0x17c7,0x17c7,0x17c7,0x17ca,0x185d,0x1860,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db, -0x18db,0x18db,0x18db,0x16f8,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599,0x1599, -0x1620,0x1620,0x1620,0x1620,0x1767,0x1767,0x15f0,0x15f0,0x15f0,0x15f0,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641, -0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x15ed,0x1644,0x1653,0x15e4,0x15f3,0x15f3,0x1698,0x15e7,0x15e7, -0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623, -0x1623,0x1623,0x1623,0x1647,0x164d,0x164a,0x164a,0x164a,0x164a,0x15ff,0x1602,0x164a,0x164a,0x164a,0x164a,0x15fc, -0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x16e3,0x16e3,0x16e3,0x16e3, -0x16e3,0x1791,0x1806,0x16e3,0x16e3,0x16e3,0x16e3,0x1809,0x1806,0x18bd,0x16e3,0x1791,0x16e3,0x16e3,0x16e3,0x16e3, -0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3, +0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc, +0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc, +0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce, +0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce, +0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f, +0x147f,0x185d,0x185d,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe, +0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a, +0x167a,0x167a,0x167a,0x167a,0x1482,0x1482,0x1482,0x1482,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a, +0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x1743,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488, +0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488, +0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3, +0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3, +0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6, +0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6, +0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9, +0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9, +0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac, +0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac, +0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f, +0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x14ac, +0x14ac,0x14ac,0x14ac,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f, +0x150f,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x150f,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac, +0x14ac,0x14ac,0x14ac,0x14ac,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8, +0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8, +0x14b8,0x14b8,0x14b8,0x14b8,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7, +0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7, +0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14cd,0x14ca,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7, +0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8, +0x15d8,0x15d8,0x15d8,0x15d8,0x1821,0x17a9,0x17a9,0x17ac,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4, +0x14f7,0x159f,0x159f,0x159f,0x159f,0x159f,0x159f,0x1623,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x159c,0x159c,0x159c, +0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620, +0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x14f4,0x16fb,0x16fb,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9, +0x17a9,0x17a9,0x17a9,0x181e,0x18d5,0x17ac,0x17ac,0x17ac,0x1620,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623, +0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1620,0x1620,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa, +0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa, +0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f, +0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f, +0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x150f,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159f,0x159c, +0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x159f,0x1623,0x1623,0x159f,0x159f,0x159f,0x159f,0x159f, +0x159f,0x159f,0x159c,0x1527,0x159f,0x159f,0x159f,0x17a9,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x1527,0x159c, +0x159c,0x159c,0x159c,0x159c,0x1620,0x16fb,0x16fb,0x16fb,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c, +0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x1620,0x1557,0x1557,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554, +0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554, +0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557, +0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557, +0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a, +0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x1587,0x1587,0x1587, +0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a, +0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a, +0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5, +0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5, +0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x1707,0x1707,0x1707,0x1707,0x1707,0x17bb,0x17bb, +0x17bb,0x17bb,0x17bb,0x17bb,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x15a5,0x15a5,0x15a5,0x15a5, +0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x182a, +0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x17e2,0x17e2,0x17e2,0x17df, +0x17df,0x17df,0x17df,0x17e2,0x1875,0x1878,0x18f3,0x18f3,0x18f3,0x18f3,0x18f3,0x18f3,0x18f3,0x18f3,0x18f3,0x1710, +0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x1635,0x1635,0x1635,0x1635, +0x177f,0x177f,0x1608,0x1608,0x1608,0x1608,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656, +0x1656,0x1656,0x1656,0x1605,0x1659,0x1668,0x15fc,0x160b,0x160b,0x16b0,0x15ff,0x15ff,0x1638,0x1638,0x1638,0x1638, +0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x165c, +0x1662,0x165f,0x165f,0x165f,0x165f,0x1617,0x166e,0x165f,0x165f,0x165f,0x165f,0x1614,0x1620,0x1620,0x1620,0x1620, +0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x17a9,0x181e,0x16fb, +0x16fb,0x16fb,0x16fb,0x1821,0x181e,0x18d5,0x16fb,0x17a9,0x16fb,0x16fb,0x16fb,0x16fb,0x1620,0x1620,0x1620,0x1620, +0x1620,0x1620,0x1620,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb, +0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x1629,0x1629,0x1629,0x1629, +0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1704,0x1704,0x1704,0x1704,0x1704,0x1827,0x1827,0x1827,0x1827, +0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x18db,0x18db,0x18db,0x1629,0x1629,0x1629,0x1629, +0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629, +0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x162c,0x162c,0x162c,0x162c, +0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c, +0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x18de, +0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f, +0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f, +0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635, +0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635, +0x1638,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x1638,0x1638,0x1638,0x1638,0x1638, +0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638, +0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671, +0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671, +0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9, +0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9, +0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7, +0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7, +0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da, +0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da, 0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3, -0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x16ec,0x16ec,0x16ec,0x16ec,0x16ec, -0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x18c3,0x18c3,0x18c3, -0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614, -0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614, -0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617, -0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617, -0x1617,0x1617,0x1617,0x18c6,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a, -0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a, -0x161a,0x161a,0x161a,0x161a,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620, -0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620, -0x1620,0x1620,0x1620,0x1620,0x1623,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x1623, -0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623, -0x1623,0x1623,0x1623,0x1623,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659, -0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659, -0x1659,0x1659,0x1659,0x1659,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1, -0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1, -0x16a1,0x16a1,0x16a1,0x16a1,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf, -0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf, -0x16bf,0x16bf,0x16bf,0x16bf,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2, -0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2, -0x16c2,0x16c2,0x16c2,0x16c2,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb, -0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb,0x16cb, -0x16cb,0x16cb,0x16cb,0x16cb,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd, -0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd, -0x16dd,0x16da,0x16da,0x16da,0x16e3,0x16e3,0x16e3,0x1806,0x1806,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1806, -0x1806,0x1806,0x1791,0x1791,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e6,0x16e6,0x16e3,0x16e6,0x16e6,0x1791,0x1794, -0x1791,0x1791,0x1791,0x1791,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725, -0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725, -0x1725,0x1725,0x1725,0x1725,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743, -0x1743,0x1743,0x1743,0x1743,0x178e,0x178e,0x1743,0x178e,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743, -0x1743,0x1749,0x1749,0x1749,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773, -0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773, -0x1773,0x1773,0x1773,0x1773,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788, -0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788, -0x1788,0x1788,0x1788,0x1788,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb, -0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb, -0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e, -0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x1803,0x1803,0x1803,0x1803, -0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803, -0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1806,0x1806,0x1806,0x1806, -0x1806,0x1806,0x1806,0x1806,0x1806,0x18bd,0x18bd,0x18bd,0x18bd,0x1935,0x1935,0x1935,0x1806,0x1806,0x1806,0x1806, -0x1806,0x1806,0x1806,0x18bd,0x18bd,0x18bd,0x18bd,0x1935,0x1935,0x1935,0x19f2,0x1935,0x180f,0x180f,0x180f,0x180f, -0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f, -0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x1815,0x1815,0x1815,0x1815, -0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815, -0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1845,0x1845,0x1845,0x1845, -0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845, -0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x18a5,0x18a5,0x18a5,0x18a5, -0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5, -0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18a5,0x18b1,0x18b1,0x18b1,0x18b1, -0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1, -0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18d5,0x18d5,0x18d5,0x18d5, -0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5, -0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x1902,0x1902,0x1902,0x1902, -0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x18ff,0x18ff,0x18ff, -0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x193b,0x193b,0x193b,0x193b, -0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b, -0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x193b,0x1965,0x1965,0x1965,0x1965, -0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965, -0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x196e,0x196e,0x196e,0x196e, -0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e, -0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x1971,0x1971, -0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x1971,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f, -0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f, -0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998, -0x1998,0x1998,0x199e,0x199e,0x199e,0x199e,0x19a7,0x199e,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1, -0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0, -0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0, -0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x1a13,0x1a13,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9, -0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9, -0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7, -0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7, -0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da, -0x19da,0x19dd,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da, -0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85, -0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85, -0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a85,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88, -0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88, -0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0,0,0,0 +0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3, +0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5, +0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f2,0x16f2,0x16f2, +0x16fb,0x16fb,0x16fb,0x181e,0x181e,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x181e,0x181e,0x181e,0x17a9,0x17a9, +0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fe,0x16fe,0x16fb,0x16fe,0x16fe,0x17a9,0x17ac,0x17a9,0x17a9,0x17a9,0x17a9, +0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d, +0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d, +0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b, +0x17a6,0x17a6,0x175b,0x17a6,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x1761,0x1761,0x1761, +0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b, +0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b,0x178b, +0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0, +0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0, +0x17a9,0x17a9,0x17a9,0x181e,0x181e,0x181e,0x181e,0x194d,0x194d,0x1a0a,0x1a97,0x1b09,0x1b09,0x1b09,0x1a97,0x1a0a, +0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e, +0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3, +0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3, +0x17d3,0x17d3,0x17d3,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986, +0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b, +0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b, +0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e, +0x181e,0x18d5,0x18d5,0x18d5,0x18d5,0x194d,0x194d,0x194d,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e,0x18d5, +0x18d5,0x18d5,0x18d5,0x194d,0x194d,0x194d,0x1a0a,0x194d,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827, +0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827, +0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a, +0x182a,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3, +0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1b21,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d, +0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d, +0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x1836,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0, +0x18f0,0x18f0,0x18f0,0x18f0,0x18ea,0x18ea,0x18ea,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6, +0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1b39,0x1b39,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d, +0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d, +0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d, +0x188d,0x188d,0x1890,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d, +0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x1ae2,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd, +0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd, +0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18bd,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9, +0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9, +0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed, +0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed, +0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x191a,0x191a,0x191a,0x191a,0x191a,0x191a,0x191a,0x191a, +0x191a,0x191a,0x191a,0x191a,0x191a,0x191a,0x191a,0x191a,0x191a,0x1917,0x1917,0x1917,0x1917,0x1917,0x1917,0x1917, +0x1917,0x1917,0x1917,0x1917,0x1917,0x1917,0x1917,0x1917,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1923,0x1923,0x1923, +0x1923,0x1923,0x1923,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2, +0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953, +0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953, +0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d, +0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d, +0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986, +0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986, +0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989, +0x1989,0x1989,0x1989,0x1989,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7, +0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7, +0x19a7,0x19a7,0x19a7,0x19a7,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b6,0x19b6, +0x19b6,0x19b6,0x19bf,0x19b6,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9, +0x19b9,0x19b9,0x19b9,0x19b9,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8, +0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8, +0x19c8,0x19c8,0x1a2e,0x1a2e,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1, +0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1,0x19d1, +0x19d1,0x19d1,0x19d1,0x19d1,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef, +0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef, +0x19ef,0x19ef,0x19ef,0x19ef,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f5,0x19f2,0x19f2, +0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2, +0x19f2,0x19f2,0x19f2,0x19f2,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0, +0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0, +0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3, +0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3, +0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8, +0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8, +0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd, +0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1adc,0x1adc,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd, +0x1afd,0x1afd,0x1afd,0x1afd,0x1ae5,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae5,0x1ae2,0x1ae5,0x1ae2, +0x1ae2,0x1ae5,0x1ae2,0x1ae2,0x1ae2,0x1ae5,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1af1,0x1af1, +0x1af1,0x1af1,0x1af1,0x1af1,0x1af1,0x1af1,0x1af1,0x1ae2,0x1aee,0x1ae8,0x1aee,0x1ae8,0x1aee,0x1ae8,0x1aee,0x1ae8, +0x1ae8,0x1ae8,0x1aee,0x1ae8,0x1aee,0x1ae8,0x1aee,0x1ae8,0x1aee,0x1ae8,0x1aee,0x1ae8,0x1aee,0x1ae8,0x1aee,0x1ae8, +0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b06,0x1b06,0x1b00,0x1b00, +0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06, +0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b00,0x1b00,0x1b00,0x1b00, +0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00, +0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b06,0x1b06,0x1b06,0x1b06, +0x1b06,0x1b06,0x1b06,0x1b06,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03, +0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03, +0x1b03,0x1b03,0x1b03,0x1b03,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06, +0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06, +0x1b06,0x1b06,0x1b06,0x1b06,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e, +0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e, +0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27, +0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27,0x1b27, +0x1b27,0x1b27,0x1b27,0x1b27,0,0,0,0 }; static const UTrie2 propsVectorsTrie={ propsVectorsTrie_index, - propsVectorsTrie_index+5924, + propsVectorsTrie_index+6044, nullptr, - 5924, - 37208, + 6044, + 37820, 0xa40, - 0x17a4, + 0x181c, 0x0, 0x0, 0x110000, - 0xa878, + 0xab54, nullptr, 0, false, false, 0, nullptr }; -static const uint32_t propsVectors[6813]={ +static const uint32_t propsVectors[6996]={ 0x67,0,0,0x67,0,0xe00000,0x67,0,0x1600000,0x67,0x80000,0x20,0x67,0x20000000,0,0x5067, 0,0xe00000,0x5000000,0,0x900020,0x5000000,0x80000,0xc4918820,0x5000000,0x80000,0xc5c18020,0x5000000,0x80000,0xc5e18820,0x5000000,0x180000, 0xc0918820,0x5000000,0x4000000,0x4100000,0x5000000,0x4000000,0x4200000,0x5000000,0x4000000,0x5500000,0x5000000,0x4000000,0x5600000,0x5000000,0x4000000,0xc200000, @@ -4258,12 +4344,12 @@ static const uint32_t propsVectors[6813]={ 0x4000000,0xc820000f,0x5000000,0x4000000,0xc9600002,0x5000000,0x4000001,0xc8445801,0x5000000,0x4000001,0xc8445802,0x5000000,0x4000001,0xc8c4000b,0x5000000,0x4000010, 0xc9071401,0x5000000,0x4000020,0x4200000,0x5000000,0x4000020,0xc820000e,0x5000000,0x4000020,0xc820000f,0x5000000,0x4000020,0xc881000e,0x5000000,0x4000020,0xc881000f, 0x5000000,0x4000020,0xc941000e,0x5000000,0x4000020,0xc941000f,0x5000000,0x4000022,0xc820000e,0x5000000,0x4000022,0xc820000f,0x5000000,0x4000400,0x4200400,0x5000000, -0x4000400,0xc8200001,0x5000000,0x4000400,0xc8200002,0x5000000,0x6800000,0x10201c00,0x5000000,0x6800010,0xc8201001,0x5000000,0x6800020,0x10201c00,0x5000000,0x7c00000, +0x4000400,0xc8200001,0x5000000,0x4000400,0xc8200002,0x5000000,0x6800000,0x10201c00,0x5000000,0x6800010,0xc9001001,0x5000000,0x6800020,0x10201c00,0x5000000,0x7c00000, 0x10200000,0x5000000,0x7c00020,0x10200000,0x5000000,0x7c00100,0xc8220402,0x5000000,0x7c00120,0xc8220405,0x5000000,0x7c00120,0xc8230402,0x5000000,0x7c00120,0xc8250402, 0x5000000,0x7c00120,0xc8250405,0x5000000,0x7c00500,0x10220400,0x5000000,0x7c00500,0x10230400,0x5000000,0x7c00500,0x10530400,0x5000000,0x7c00500,0xf8230400,0x5000000, 0x7c00d00,0x10230400,0x5000000,0x24000000,0x4100000,0x5000000,0x24000000,0x4200000,0x5000000,0x24000000,0x4810000,0x5000000,0x24000000,0x4b00000,0x5000000,0x24000000, 0x4e00000,0x5000000,0x24000000,0x5410000,0x5000000,0x24000000,0x5500000,0x5000000,0x24000000,0x5710000,0x5000000,0x24000000,0x6800000,0x5000000,0x24000000,0xc8200002, -0x5000000,0x24000000,0xc9500002,0x5000000,0x24000002,0x7000000,0x5000000,0x24000006,0xc8c0000b,0x5000000,0x24000008,0x5410000,0x5000000,0x24000008,0x5710000,0x5000000, +0x5000000,0x24000000,0xc9500002,0x5000000,0x24000002,0x4400000,0x5000000,0x24000006,0xc8c0000b,0x5000000,0x24000008,0x5410000,0x5000000,0x24000008,0x5710000,0x5000000, 0x24000020,0x4200000,0x5000000,0x24000020,0x4200001,0x5000000,0x24000020,0x4810000,0x5000000,0x24000020,0x4f00000,0x5000000,0x24000020,0x5001400,0x5000000,0x24000020, 0x5410000,0x5000000,0x24000020,0x5600000,0x5000000,0x24000020,0xc8200002,0x5000000,0x24000020,0xc9500002,0x5000000,0x24000022,0x5600000,0x5000000,0x2c000010,0x5248000, 0x5000000,0x2c000010,0xc9248002,0x5000000,0x40000001,0x4440020,0x5000000,0x40000001,0x463b020,0x5000000,0x40000001,0x4643020,0x5000000,0x40000001,0x4a5a040,0x5000000, @@ -4290,397 +4376,409 @@ static const uint32_t propsVectors[6813]={ 0x5000018,0x7c00100,0xc9830002,0x5000018,0x7c00100,0xfd830000,0x5000018,0x7c00900,0xfd830000,0x5000018,0x7e00100,0xfd830000,0x5000019,0x7c00100,0x8220400,0x5000019, 0x7c00100,0x8250400,0x5000019,0x7c00100,0x10220400,0x5000019,0x7c00100,0x10220401,0x5000019,0x7c00100,0x10230400,0x5000019,0x7c00100,0x10250401,0x5000019,0x7c00100, 0x18220400,0x5000019,0x7c00100,0x18230400,0x5000019,0x7c00100,0x20220400,0x5000019,0x7c00100,0x20220401,0x5000019,0x7c00100,0x20250400,0x5000019,0x7c00100,0x20250401, -0x5000019,0x7c00100,0xc8220402,0x5000019,0x7c00100,0xc8250401,0x5000019,0x7c00100,0xc8250402,0x5000019,0x7c00100,0xfc220400,0x5000019,0x7c00100,0xfc220401,0x5000019, -0x7c00100,0xfc250400,0x5000019,0x7c00100,0xfc250401,0x5000019,0x7c00500,0xc822040f,0x500001a,0x6800000,0x21329800,0x500001a,0x6800100,0x8962541,0x500001a,0x6800100, -0xfc962540,0x500001a,0x6800100,0xfc962541,0x500001a,0x7c00100,0x8230400,0x500001a,0x7c00100,0x20230400,0x500001a,0x7c00100,0xfc230400,0x500001f,0x4000000,0x4200000, -0x500001f,0x6800000,0x21329800,0x500001f,0x6800100,0xfc962540,0x500001f,0x6800100,0xfc962541,0x500001f,0x7c00100,0x8230400,0x500001f,0x7c00100,0x20230400,0x500001f, -0x7c00100,0xfc230400,0x5000023,0x6800100,0xfc962540,0x5000023,0x6800100,0xfc962541,0x5000023,0x7c00100,0xfc230400,0x5000023,0x7c00100,0xfc230401,0x5000024,0x6800000, -0x21329800,0x5000024,0x6800100,0x20962540,0x5000024,0x6800100,0xfc962540,0x5000024,0x7c00100,0x8230400,0x5000024,0x7c00100,0x20230400,0x5000024,0x7c00100,0xfc230400, -0x5000026,0x4000000,0x4200000,0x5000026,0x4000010,0x4400000,0x5000026,0x6800000,0xfd329800,0x5000026,0x7800100,0xc9830142,0x5000026,0x7c00100,0xfd830000,0x5000026, -0x7c00900,0xfd830000,0x5000026,0x7e00100,0xfd830000,0x5000067,0x1000,0,0x5000410,0x7c00500,0xf8230400,0x500041b,0x4000400,0x4200400,0x5000492,0x7c00500, -0xc8230401,0x50004a5,0x4000010,0x4b00000,0x50004a5,0x4000010,0x5071400,0x50004b1,0xc000010,0x4b48000,0x50004b9,0x7c00900,0x8230400,0x50004e9,0xc000010,0x4448000, -0x50004fe,0xc000010,0x4448000,0x5000536,0x4000000,0x4200000,0x50005be,0x4000000,0x4e00000,0x500061b,0x24000000,0x14810000,0x500061b,0x24000000,0x15410000,0x5000c94, -0x4000400,0x14200000,0x5000ca3,0xc000010,0x5049400,0x5000cc7,0x6800000,0xfd329800,0x5000ccb,0xc000010,0x4b48000,0x5000d19,0x6800000,0xfd329800,0x5000d1e,0x6800000, -0xfd329800,0x5000d22,0x6800000,0x21329800,0x5000d26,0x6800000,0xfd329800,0x5000d2a,0x4000000,0x4200000,0x5000d2a,0x6800000,0x21329800,0x5000d2f,0x6800000,0xfd329800, -0x5000e1f,0x7c00100,0xc8230408,0x5001000,0x80004,0xc4418820,0x5001000,0x4000000,0x4100000,0x5001000,0x4000000,0xc8100002,0x5001000,0x4000000,0xc8100003,0x5001000, -0x4000000,0xc8100006,0x5001000,0x4000000,0xc810000e,0x5001000,0x4000000,0xc810000f,0x5001000,0x4000000,0xc9500002,0x5001000,0x4000000,0xc9600002,0x5001000,0x4000100, -0xc8120403,0x5001000,0x4000100,0xc8150403,0x5001000,0x4000400,0x4200400,0x5001000,0x4000400,0xc8100002,0x5001000,0x4000400,0xc8100402,0x5001000,0x4000400,0xc8500002, -0x5001000,0x7c00120,0xc8120405,0x5001000,0x7c00d00,0x10130400,0x5001000,0x24000000,0x4100000,0x5001000,0x24000000,0x4200000,0x5001000,0x24000000,0x4e00000,0x5001000, -0x24000000,0x5400000,0x5001000,0x24000000,0x5500000,0x5001000,0x24000000,0x5600000,0x5001000,0x24000000,0xc8200002,0x5001000,0x24000000,0xc8f00002,0x5001000,0x24000000, -0xf8401000,0x5001000,0x24000002,0x4100000,0x5001000,0x24000002,0x4370000,0x5001000,0x24000002,0x7070000,0x5001000,0x24000006,0xfb000000,0x5001000,0x24000008,0x5710000, -0x5001000,0x24000008,0x5712c00,0x5001000,0x24000008,0xf9712c00,0x5001000,0x24000020,0x4100000,0x5001000,0x24000020,0x4100001,0x5001000,0x24000020,0x5500000,0x5001000, -0x24000020,0x5600000,0x5001000,0x24000020,0xc8100002,0x5001000,0x24000020,0xc9500002,0x5001000,0x2c000010,0xc8f0ac02,0x5001008,0x7c00100,0xfc220400,0x5001008,0x7c00100, -0xfc220401,0x5001008,0x7c00100,0xfc250400,0x5001008,0x7c00100,0xfc250401,0x500100e,0x7c00100,0xc8250401,0x500100e,0x7c00100,0xfc220400,0x500100e,0x7c00100,0xfc250400, -0x5001019,0x7c00100,0x8220400,0x5001019,0x7c00100,0x10220400,0x5001019,0x7c00100,0x20220401,0x5001019,0x7c00100,0xc8120402,0x5001019,0x7c00100,0xc812040f,0x5001019, -0x7c00100,0xc8150401,0x5001019,0x7c00100,0xc8150402,0x5001019,0x7c00100,0xc8220402,0x5001019,0x7c00100,0xc8250402,0x5001019,0x7c00100,0xfc220400,0x5001019,0x7c00100, -0xfc220401,0x5001019,0x7c00100,0xfc250400,0x5001019,0x7d00100,0xc0220402,0x5001067,0,0,0x5001400,0x6800c00,0xf8101000,0x5001417,0x4000400,0xc8100002, -0x5001417,0x7c00500,0x10130400,0x5001419,0x7c00500,0x10130400,0x5002000,0x4000000,0x5600000,0x5002000,0x4000000,0xc820000a,0x5002000,0x4000020,0xc820000a,0x5002012, -0x7c00100,0xc8e3040a,0x5002012,0x7c80100,0xc4e3040a,0x5002016,0x7c00100,0xc8e30c0a,0x5002016,0x7c00100,0xca530c0a,0x50025a4,0x4000008,0xc881000a,0x50025a4,0x4000008, -0xc941000a,0x50025a4,0x4000010,0xc887000a,0x50025a4,0x6800004,0xc920000a,0x50025a4,0xc000010,0xc884800a,0x50025bc,0x7c00d00,0xca530c0a,0x5003000,0x4000000,0xc8810011, -0x5003000,0x4000000,0xc8e00011,0x5003000,0x4000000,0xc9410011,0x5003000,0x4000000,0xc9500011,0x5003000,0x4000000,0xc9600011,0x5003000,0x4000001,0xc8445811,0x5003000, -0x4000006,0xc8e70011,0x5003000,0x4000008,0xc8e00011,0x5003000,0x4000008,0xc8e02c11,0x5003000,0x4000010,0xc8871411,0x5003000,0x4000010,0xc9271011,0x5003000,0x4000010, -0xc9271411,0x5003000,0x4000020,0xc8e00011,0x5003000,0x4000400,0xc8e00011,0x5003000,0x4000420,0xc8e00011,0x5003000,0x6800000,0xc8e01c11,0x5003000,0x6800040,0xc8e29811, -0x5003000,0xc000010,0xc880ac11,0x5003000,0xc000010,0xc8b48011,0x5003019,0x7c00100,0xc8e20411,0x5003019,0x7c00100,0xc8e50411,0x5003019,0x7c00140,0xc8e20411,0x5003019, -0x7c00140,0xc8e50411,0x5004000,0x4000400,0xc8200002,0x5004000,0x6800000,0xfc201c00,0x5004000,0x68000c0,0xfd329800,0x5004000,0x24000000,0x4200000,0x5004000,0x24000000, -0x4810000,0x5004000,0x24000000,0x5410000,0x5004000,0x24000000,0x5500000,0x5004000,0x24000000,0x5600000,0x5004000,0x24000000,0x5b00000,0x5004000,0x24000000,0x6410000, -0x5004000,0x24000006,0xf8d70000,0x5004000,0x24000008,0x5714000,0x5004000,0x24000008,0xf9713c00,0x5004000,0x24000010,0x5071400,0x5004000,0x24000010,0xf9071000,0x5004000, -0x24000020,0x4200000,0x5004000,0x24000020,0x4400000,0x5004000,0x24000020,0x5600000,0x5004000,0x24000400,0x4200000,0x5004000,0x24000420,0x4200000,0x5004000,0x2c000010, -0x4b48000,0x5004000,0x2c000010,0xf900ac00,0x5004000,0x44000001,0x5a45800,0x5004019,0x7c00100,0xfc220400,0x5004019,0x7c00100,0xfc250400,0x5004019,0x7c001c0,0xfc220400, -0x5004019,0x7c001c0,0xfc250400,0x5005000,0x4000000,0x4e00000,0x5005000,0x4000000,0x14e00000,0x5005000,0x4000000,0xc881000c,0x5005000,0x4000000,0xc8810010,0x5005000, -0x4000000,0xc8e00002,0x5005000,0x4000000,0xc8e0000c,0x5005000,0x4000000,0xc8e0000d,0x5005000,0x4000000,0xc8e00010,0x5005000,0x4000000,0xc941000c,0x5005000,0x4000000, -0xc9410010,0x5005000,0x4000000,0xc950000c,0x5005000,0x4000000,0xc960000c,0x5005000,0x4000002,0xc8e7000c,0x5005000,0x4000002,0xc8e70010,0x5005000,0x4000008,0xc8810010, -0x5005000,0x4000008,0xc9410010,0x5005000,0x4000010,0xc887140c,0x5005000,0x4000010,0xc8e7000c,0x5005000,0x4000010,0xc927100c,0x5005000,0x4000010,0xc927140c,0x5005000, -0x4000020,0xc8e0000c,0x5005000,0x4000026,0xc8e7000c,0x5005000,0x6800000,0xc8e01c02,0x5005000,0x6800000,0xc8e01c10,0x5005000,0xc000010,0xc880ac0c,0x5005000,0xc000010, -0xc8b4800c,0x5005000,0x24000000,0x4200000,0x5005000,0x24000000,0x4e00000,0x5005000,0x24100000,0xc0810001,0x5005000,0x24100000,0xc1410001,0x5005005,0x7c00100,0x40e30400, -0x5005011,0x7c00300,0x10e30000,0x5005011,0x7c00300,0xc8e30001,0x5005011,0x7c00300,0xfce30000,0x5005011,0x7c00900,0xfd230400,0x5005011,0x7c40300,0x20e30000,0x5005011, -0x7c40300,0xfce30000,0x5005012,0x4000000,0xc8e00002,0x5005012,0x4000000,0xc8e00003,0x5005012,0x7c00100,0xa130480,0x5005012,0x7c00100,0xc8e30402,0x5005012,0x7c80100, -0xc4e30402,0x5005012,0x7c80100,0xc6130480,0x5005014,0x7c00100,0xfce30000,0x5005014,0x7c00100,0xfce30001,0x5005014,0x7c00100,0xfe530000,0x5005014,0x7c00900,0xfd230000, -0x5005014,0x7c00900,0xfd230001,0x5005016,0x4000000,0xc8e00c03,0x5005016,0x4000000,0xc8e00c0d,0x5005016,0x7c00100,0xfce30c00,0x5005016,0x7c00100,0xfce30c01,0x5005016, -0x7c00100,0xfe530c00,0x5005016,0x7c00900,0xfd230c00,0x5005016,0x7c00900,0xfd230c01,0x50055a4,0x6800004,0xf9200000,0x50055a4,0x24000000,0x4810000,0x50055a4,0x24000000, -0x5410000,0x50055a4,0x24000008,0x4810000,0x50055a4,0x24000008,0x5410000,0x50055aa,0x24000010,0x4870000,0x50055b1,0x2c000010,0x4848000,0x50055b9,0x4000000,0x4e00000, -0x50055b9,0x24000000,0x4e00000,0x50055b9,0x24000002,0x4e00000,0x50055b9,0x24000002,0x5200000,0x50055b9,0x24000008,0x4810000,0x50055b9,0x24000008,0x5410000,0x50055b9, -0x24000008,0xc810000,0x50055bc,0x7000400,0xc9200c02,0x50055bc,0x7c00900,0x10930c00,0x50055bc,0x7c00900,0x10e30c00,0x50055bc,0x7c00d00,0xfe530c00,0x50055be,0x4000000, -0x4e00000,0x50055be,0x4000000,0xc8e00002,0x50055be,0x4000000,0xc8e00003,0x50055be,0x4000000,0xc8e0000d,0x50055be,0x4000000,0xc8e0000f,0x50055be,0x7c00300,0xfce30000, -0x50055bf,0x24000000,0x4810000,0x50055bf,0x24000000,0x5410000,0x50055c7,0x24000000,0x4810000,0x50055c7,0x24000000,0x5410000,0x5008004,0x7c00100,0xc8230401,0x5008004, -0x7c00100,0xfc230400,0x500800a,0x7c00100,0x20230401,0x500800a,0x7c00100,0xc8230401,0x500800a,0x7c00100,0xfc230400,0x500800a,0x7c00100,0xfc230401,0x500800f,0x7c00100, -0xfc230400,0x500801a,0x7c00100,0xfc230400,0x500801f,0x7c00100,0xc8230401,0x500801f,0x7c00100,0xfc230400,0x5008024,0x7c00100,0x20230400,0x5008024,0x7c00100,0xfc230400, -0x5010001,0x2000,0x14962460,0x5010001,0x2802020,0x10962460,0x5010001,0x2802400,0x10962460,0x5010001,0x2802400,0x10c62460,0x5010001,0x2880000,0xc6a65620,0x5010002, -0x2802100,0x20962460,0x5010002,0x2802400,0x20962460,0x5010004,0x2802100,0x8962460,0x5010004,0x2802100,0x20962460,0x5010004,0x2802100,0xfc962460,0x5010004,0x2802400, -0xfc962460,0x501000a,0x2802100,0x8962460,0x501000a,0x2802100,0x20962460,0x501000a,0x2802100,0xfc962460,0x501000a,0x2802400,0xfc962460,0x501000f,0x2802100,0x20962460, -0x501000f,0x2802100,0xfc962460,0x501000f,0x2802400,0xfc962460,0x5010010,0x2802100,0xfc962460,0x5010010,0x2802400,0xfc962460,0x5010010,0x2802900,0xfc962460,0x5010010, -0x2806400,0xfc962460,0x5010013,0x2802500,0x20962460,0x5010013,0x2802500,0x30962460,0x5010015,0x2802100,0x20962460,0x5010015,0x2802100,0xfc962460,0x5010015,0x2802100, -0xfc962461,0x5010015,0x2806400,0xfc962460,0x5010018,0x2802100,0xfd862460,0x5010018,0x2802400,0xfd862460,0x501001a,0x2802100,0xfc962460,0x501001f,0x2802100,0x20962460, -0x501001f,0x2802100,0xfc962460,0x501001f,0x2802400,0xfc962460,0x5010023,0x2802100,0x10962460,0x5010023,0x2802100,0x20962460,0x5010023,0x2802100,0xfc962460,0x5010023, -0x2806400,0xfc962460,0x5010024,0x2802100,0x20962460,0x5010024,0x2802100,0xfc962460,0x5010024,0x2802100,0xfc962461,0x5010026,0x2802100,0xfd862460,0x5010026,0x2802400, -0x21862460,0x5010026,0x2802400,0xfd862460,0x5010026,0x2806500,0xfd862460,0x501089e,0x2802400,0x18962460,0x50108c2,0x2802100,0xfc962460,0x50108c2,0x2802500,0xfc962460, -0x50108cd,0x2802400,0x8962460,0x50108dc,0x2802400,0x8962460,0x5010c98,0x2802400,0x8962460,0x5010c9c,0x2802400,0x18962460,0x5011001,0x2802400,0x10962460,0x5011001, -0x2802400,0x10c62460,0x5011001,0x2802400,0x20962460,0x5011001,0x2802400,0xc8962461,0x5011001,0x2802400,0xfc962460,0x501181d,0x2802400,0xfc962460,0x5011825,0x2802400, -0xfc962460,0x501182d,0x2802400,0xfc962460,0x501182f,0x2802400,0xfc962460,0x5011831,0x2802400,0xfc962460,0x5011836,0x2802400,0xfc962460,0x5011841,0x2802400,0x20962460, -0x5011847,0x2802400,0xfc962460,0x501184c,0x2802400,0xfc962460,0x5011855,0x2802400,0xfc962460,0x5011860,0x2802400,0xfc962460,0x5011863,0x2802400,0xfc962460,0x5011867, -0x2802400,0xfc962460,0x501186a,0x2802400,0x10962460,0x501186a,0x2802400,0x20962460,0x501186c,0x2802400,0x10962460,0x501186e,0x2802400,0x10962460,0x5011871,0x2802400, -0x10962460,0x5011875,0x2802400,0xfc962460,0x501187b,0x2802400,0x10962460,0x501187f,0x2802400,0x10962460,0x5011881,0x2802400,0x10962460,0x5011884,0x2802400,0x10962460, -0x5011887,0x2802400,0xfc962460,0x501188e,0x2802400,0x10962460,0x501188e,0x2802500,0x8962460,0x50125bc,0x3802500,0xc926246a,0x5015012,0x2802400,0x18962460,0x50159bc, -0x2802400,0x20962460,0x50159d0,0x2802400,0x10962460,0x5018004,0x2806400,0xfc962460,0x501800a,0x2806400,0xfc962460,0x501800f,0x2806400,0xfc962460,0x501801a,0x2806400, -0xfc962460,0x501801f,0x2806400,0xfc962460,0x5018024,0x2806400,0xfc962460,0x8000000,0x4000000,0x5600000,0x8000019,0x7c00100,0xc8220401,0x8000027,0x4000000,0x4200000, -0x8000027,0x4000000,0x4400000,0x8000027,0x4000000,0x4500000,0x8000027,0x4000000,0x4810000,0x8000027,0x4000000,0x4b00000,0x8000027,0x4000000,0x5410000,0x8000027, -0x4000000,0xc8c0000b,0x8000027,0x4000000,0xf8400000,0x8000027,0x4000010,0x4b00000,0x8000027,0x4000010,0x4c00000,0x8000027,0x6800000,0xfd329800,0x8000027,0x6800100, -0xfc462540,0x8000027,0x6800400,0x10962540,0x8000027,0x7c00100,0x8230400,0x8000027,0x7c00100,0x10230400,0x8000027,0x7c00100,0xc8230401,0x8000027,0x7c00100,0xfc230400, -0x8000067,0,0x1900000,0x8000067,0x1000,0,0x8001067,0,0,0x8005012,0x7c00100,0xfdf304c1,0x8005012,0x7c00100,0xfe0304e1,0x8010013, -0x2802400,0x20962460,0x8010013,0x2802500,0x20962460,0x8010027,0x2802100,0xc8962461,0x8010027,0x2802100,0xfc962460,0x8010027,0x2802400,0x8962460,0x8010027,0x2802400, -0x10962460,0x8010027,0x2802400,0x20962460,0x8010027,0x2802500,0x28962460,0x8010027,0x2806400,0xfc962460,0x8010027,0x2902100,0xc0962462,0x9000000,0x4000000,0x4700000, -0x9001000,0x4000000,0x5600000,0xc000000,0,0x4918820,0xc000000,0x4000000,0x4200000,0xc000000,0x4000000,0x5600000,0xc000000,0x4000400,0x4200400,0xc000000, -0x7c00100,0xc8220405,0xc000000,0x7c00500,0x10230400,0xc000000,0x24000000,0x4200000,0xc000000,0x2c000010,0xc9248002,0xc000002,0x4000000,0xf8200000,0xc000002,0x7c00100, -0x20230400,0xc000002,0x7c00100,0xfc230400,0xc000003,0x4000006,0xfb000400,0xc000005,0x4000400,0x44200400,0xc000006,0x7c00100,0x40250400,0xc000008,0x7c00100,0x20220400, -0xc000008,0x7c00100,0x20220401,0xc000008,0x7c00100,0x20250400,0xc000008,0x7c00100,0x20250401,0xc00000b,0x4000000,0x4200000,0xc00000b,0x4000010,0x4200000,0xc00000b, -0x4000010,0x4400000,0xc00000b,0x6800000,0x8200000,0xc00000b,0x7c00100,0x20230400,0xc00000b,0x7c00100,0xfc230400,0xc00000b,0xc000010,0x4248000,0xc00000e,0x7c00100, -0x8220400,0xc00000e,0x7c00100,0x10220400,0xc000013,0x7c00100,0xca633801,0xc000017,0x4000000,0x4200000,0xc000017,0x4000000,0x5600000,0xc000017,0x4000000,0xc400000, -0xc000017,0x4000010,0x4400000,0xc000017,0x4000010,0x5200000,0xc000017,0x6800000,0xfd329800,0xc000017,0x6800100,0xfd862540,0xc000017,0x7c00100,0x9830000,0xc000017, -0x7c00100,0x21830000,0xc000017,0xc000010,0x4448000,0xc000019,0x7c00100,0x8220400,0xc000019,0x7c00100,0x8250400,0xc000019,0x7c00100,0x10220400,0xc000019,0x7c00100, -0x18250400,0xc000019,0x7c00100,0x20220400,0xc000019,0x7c00100,0x20220401,0xc000019,0x7c00100,0x20250400,0xc000019,0x7c00100,0x20250401,0xc000019,0x7c00100,0xfc220401, -0xc000019,0x7c00100,0xfc250401,0xc00001b,0x80000,0xc4c18820,0xc00001b,0x4000000,0x84200000,0xc00001b,0x4000006,0x84500000,0xc00001b,0x4000010,0x84400000,0xc00001b, -0x4000010,0x84b70000,0xc00001b,0x4000800,0x84200000,0xc00001b,0x6800000,0x81329800,0xc00001b,0x7c00100,0x80230400,0xc00001b,0x7c00900,0x80230400,0xc00001b,0xc000010, -0x84b48000,0xc00001c,0x4000000,0x4200000,0xc00001c,0x6800100,0x29862540,0xc00001c,0x6800100,0xfd862400,0xc00001c,0x6800100,0xfd862540,0xc00001c,0xc000010,0x4448000, -0xc00001d,0x4000000,0x84810000,0xc00001d,0x4000000,0x85410000,0xc00001d,0x4000001,0x84445800,0xc00001d,0x7c00100,0x80230400,0xc000020,0x7c00100,0x80230400,0xc000021, -0x4000000,0x4200000,0xc000021,0x6800100,0x30962540,0xc000021,0x6800100,0xfc962540,0xc000021,0x6800100,0xfc962541,0xc000021,0x7c00100,0x8230400,0xc000021,0x7c00100, -0x20230400,0xc000021,0x7c00100,0x30230400,0xc000021,0x7c00100,0xfc230400,0xc000022,0x4000000,0x44200000,0xc000022,0x4000010,0x44200000,0xc000022,0x7c00100,0x40230400, -0xc000022,0xc000010,0x44248000,0xc000022,0x80000000,0x44218560,0xc000025,0x7c00100,0xfc230400,0xc000027,0x4000000,0x4200000,0xc000027,0x4000000,0x4400000,0xc000027, -0x7c00100,0x28230400,0xc000028,0x4000000,0x44200000,0xc000028,0x7c00100,0x40230400,0xc000028,0xc000010,0x44248000,0xc00002e,0x24000000,0x14200000,0xc00002e,0x24000000, -0x14400000,0xc000539,0x4000010,0x84400000,0xc00053e,0x4000010,0x84400000,0xc00053e,0x4000010,0x84b70000,0xc00053e,0xc000010,0x84b48000,0xc000582,0x4000001,0xc8c41c0b, -0xc000d34,0x6800000,0xfd329800,0xc001000,0x4000400,0x4500400,0xc005005,0x7c00100,0x40e30400,0xc005011,0x4020000,0x4e00000,0xc005011,0x4020000,0xc8e00002,0xc005011, -0x7c00300,0xc8e30002,0xc005011,0x7c40300,0x20e30000,0xc005011,0x7c40300,0xfce30000,0xc005029,0x4000000,0x44e00000,0xc005029,0x7c00100,0x40e30400,0xc005029,0x7c00900, -0x41230400,0xc0055a2,0x4008000,0x4e00000,0xc0055a2,0x4010000,0x4e00000,0xc0055be,0x4000000,0x4e00000,0xc008017,0x7c00100,0x9830000,0xc008017,0x7c00100,0x21830000, -0xc008017,0x7c00100,0xfd830000,0xc008017,0x7d00100,0xc1830000,0xc00801c,0x7c00100,0x29830000,0xc00801c,0x7c00100,0xfd830000,0xc00801c,0x7c00100,0xfd830001,0xc010001, -0x2000,0x14962460,0xc010008,0x2000,0xc962460,0xc010017,0x2802100,0xfd862460,0xc010017,0x2802400,0x9862460,0xc010017,0x2802400,0x11862460,0xc010017,0x2802400, -0x19862460,0xc010017,0x2802400,0xfd862460,0xc010017,0x2882000,0xc5862460,0xc01001b,0x2802100,0xa0962460,0xc01001b,0x3c02100,0x80962460,0xc01001b,0x12882000,0xc4962460, -0xc01001c,0x2802100,0x29862460,0xc01001c,0x2802100,0xfd862460,0xc01001c,0x2802400,0xfd862460,0xc010021,0x2802100,0x30962460,0xc010021,0x2802100,0xfc962460,0xc010021, -0x2806400,0xfc962460,0xc010022,0x2802100,0x40962460,0xc010022,0x2802400,0x50962460,0xc010022,0x2802500,0x40962460,0xc010025,0x2802500,0xfc962460,0xc010027,0x2802100, -0x20962460,0xc010027,0x2802100,0xfc962460,0xc010027,0x2802400,0x30962460,0xc0108c2,0x2802100,0x30962460,0xc0108c2,0x2802100,0xfc962460,0xc011001,0x2802400,0x10962460, -0xc011001,0x2802400,0x10c62460,0xc018017,0x2806400,0xfd862460,0xc01801c,0x2806400,0xfd862460,0xd000000,0x80000,0xc4918820,0xd000000,0x180000,0xc0918820,0xd000000, -0x4000000,0x14200000,0xd000000,0x4000000,0xc8200001,0xd000000,0x4000020,0xc8200005,0xd000000,0x6800020,0xc9329805,0xd000000,0x7c00120,0xc8220405,0xd000000,0x7c00120, -0xc8250405,0xd000009,0x7c00100,0x80220400,0xd000009,0x7c00100,0x80250400,0xd00000d,0x7c00100,0x80230400,0xd00000e,0x7c00120,0xc8220402,0xd00000e,0x7c00120,0xc8250402, -0xd00001e,0x4000000,0x84200000,0xd00001e,0x7c00100,0x80230400,0xd000067,0x1000,0,0xd005011,0x7c00300,0xc8e30001,0xd005011,0x7c40300,0x20e30000,0xd005011, -0x7c40300,0xfce30000,0xd010000,0x82000,0xc4962460,0xd010000,0x2802000,0x10962460,0xd010000,0x2802400,0x10962460,0xd010001,0x2802400,0x10962460,0xe000000,0x80000, -0xc5e18820,0xe000000,0x80020,0xc4218820,0xe000000,0x4000000,0x4200000,0xe000000,0x4000000,0x5600000,0xe000000,0x4000001,0xc8445802,0xe000000,0x4000020,0x4200000, -0xe000000,0x4000020,0xc8200005,0xe000000,0x7c00120,0xc8220405,0xe000000,0x7c00120,0xc8250405,0xe000000,0x24000000,0x4100000,0xe000000,0x24000000,0x4200000,0xe000000, -0x24000000,0x4810000,0xe000000,0x24000000,0x5410000,0xe000000,0x24000000,0xc9500002,0xe000000,0x24000020,0x4200000,0xe000000,0x24000020,0x4810000,0xe000000,0x24000020, -0x5410000,0xe000000,0x24000020,0xc8200001,0xe000000,0x24000020,0xc8200002,0xe000000,0x2c000010,0xc9248002,0xe000002,0x4000000,0xc9500008,0xe000002,0x7c00100,0x8230400, -0xe000002,0x7c00100,0x10230400,0xe000008,0x7c00100,0x8220400,0xe000008,0x7c00100,0x8250400,0xe000008,0x7c00100,0x20220400,0xe000008,0x7c00100,0x20250400,0xe00000c, -0x7c00100,0x20230400,0xe00000e,0x4000020,0x4200000,0xe00000e,0x7c00100,0x8220400,0xe00000e,0x7c00100,0x8250400,0xe000019,0x7c00100,0x20250400,0xe000019,0x7c00100, -0xc822040f,0xe000025,0x7c00100,0xfc230400,0xe00002a,0x7c00100,0x80230400,0xe00002b,0x7c00100,0x80230400,0xe00002c,0x7c00100,0x80230400,0xe00002d,0x7c00100,0x80230400, -0xe00053a,0xc000010,0x84448000,0xe000585,0x24000000,0x4200000,0xe001000,0x4000000,0x14100000,0xe003000,0x4000000,0xc8810011,0xe003000,0x4000000,0xc9410011,0xe004000, -0x24000020,0x4810000,0xe004000,0x24000020,0x5410000,0xe005000,0x4000000,0xc8e00003,0xe005000,0x24000020,0x4200000,0xe005011,0x7c00100,0x11230400,0xe005011,0x7c00300, -0xc8e30001,0xe005014,0x7c00100,0xc8e30010,0xe005014,0x7c00100,0xfe530000,0xe005016,0x7c00100,0xa530c00,0xe005016,0x7c00100,0xc8e30c10,0xe005029,0x4000000,0x44e00000, -0xe0055b9,0x24000000,0x14e00000,0xe0055bc,0x4000002,0xf9200c00,0xe0055d2,0x4000000,0x4e00000,0xe0055d2,0x7c00100,0x11230400,0xe010001,0x2000,0x14962460,0xe010001, -0x2802000,0x10962460,0xe010001,0x2802020,0x10962460,0xe01002a,0x2802100,0x80962460,0xe01002a,0x2806400,0x80962460,0xe01002b,0x2802100,0x80962460,0xe01002b,0x2806400, -0x80962460,0xe01002c,0x2802100,0x80962460,0xe01002d,0x2802100,0x80962460,0xe011001,0x2882000,0xc4962460,0xe011001,0x12882000,0xc4962460,0xe011818,0x2802100,0x8962460, -0x10000000,0x4000000,0xc8200002,0x10000000,0x4000400,0x4200400,0x10000000,0x6800000,0x20201c00,0x10000000,0x7c00120,0xc8220405,0x10000000,0x24000000,0x4200000,0x10000000, -0x24000002,0x4200000,0x10000000,0x24000020,0x4200000,0x10000002,0x4000000,0x4200000,0x10000002,0x4000000,0x5071400,0x10000002,0x7c00100,0xfc230400,0x10000002,0x80000000, -0x5329960,0x10000004,0x7c00100,0x8230400,0x10000008,0x7c00100,0x10220400,0x10000009,0x7c00100,0x80220400,0x10000009,0x7c00100,0x80250400,0x1000000a,0x7c00100,0x20230400, -0x1000000e,0x7c00100,0x8220400,0x1000000e,0x7c00100,0x8250400,0x1000000e,0x7c00100,0x10220400,0x1000000e,0x7c00100,0xc8250402,0x1000000e,0x7c00500,0xc822040e,0x1000000e, -0x7c00500,0xc822040f,0x1000000f,0x4000000,0x5600000,0x1000000f,0x7c00100,0x8230400,0x1000000f,0x7c00100,0xfc230400,0x10000010,0x6800100,0x20962540,0x10000015,0x7c00100, -0x8230400,0x10000017,0x4000000,0x4200000,0x10000019,0x7c00100,0x10220400,0x10000019,0x7c00100,0x20220400,0x10000019,0x7c00500,0x10220400,0x10000019,0x7c00500,0xc822040e, -0x10000019,0x7c00500,0xc822040f,0x10000022,0x7c00100,0x40230400,0x10000023,0x4000000,0x4200000,0x10000023,0x4000000,0x5600000,0x1000002f,0x7c00100,0x80230400,0x10000030, -0x4000000,0x44200000,0x10000030,0x6800000,0x41329800,0x10000030,0x6800100,0x40962540,0x10000030,0x7c00100,0x40230400,0x10000030,0xc000010,0x44b48000,0x10000031,0x7c00100, -0x80230400,0x10000032,0x6800000,0x81329800,0x10000032,0x7c00100,0x80230400,0x10000033,0x7c00100,0x80230400,0x10000034,0x7c00100,0x41830000,0x10000035,0x4000010,0x84400000, -0x10000035,0x7c00100,0x80230400,0x10000621,0x4000000,0x84200000,0x10000624,0x4000000,0x84400000,0x10000627,0x4000000,0x84200000,0x10000627,0x4000000,0x84400000,0x10000d2a, -0x4000000,0x4200000,0x10000e1f,0x4000000,0x14200000,0x10001000,0x4000000,0x14200000,0x10005000,0x4000000,0x14200000,0x10005000,0x4000000,0xc8810010,0x10005000,0x4000000, -0xc8e0000d,0x10005000,0x4000000,0xc9410010,0x10005000,0x24000000,0x4200000,0x10005000,0x24000000,0x4e00000,0x10005012,0x4000000,0xc8e00002,0x10005012,0x4000000,0xc8e00003, -0x1000801f,0x7c00100,0x20230400,0x1000801f,0x7c00100,0xfc230400,0x10010002,0x2802100,0x20962460,0x10010002,0x2802400,0x20962460,0x10010002,0x2802500,0x20962460,0x1001000f, -0x2802100,0x8962460,0x10010010,0x2802100,0x20962460,0x10010015,0x2802400,0x20962460,0x10010017,0x2802400,0x19862460,0x10010030,0x2802100,0x40962460,0x10010030,0x2802400, -0x40962460,0x10011001,0x2802400,0x10962460,0x10011001,0x2802400,0x10c62460,0x10011001,0x12882000,0xc4962460,0x1001188f,0x2802400,0x10c62460,0x11000000,0x4000000,0x4200000, -0x11000000,0x4000000,0x5600000,0x11000000,0x4000400,0x14200400,0x11000000,0x7c00120,0xc8220405,0x11000000,0x24000000,0x4200000,0x11000000,0x24000000,0x4e00000,0x11000000, -0x24000000,0x5710000,0x11000000,0x24000000,0xc200000,0x11000000,0x24000000,0xc400000,0x11000000,0x24000000,0x1d710000,0x11000000,0x24000020,0x4200000,0x11000000,0x24000020, -0x4810000,0x11000000,0x24000020,0x5410000,0x11000002,0x4000000,0x5500000,0x11000002,0x7c00100,0x20230400,0x11000002,0x7c00100,0xfc230400,0x11000002,0xc000010,0x4b48000, -0x11000004,0x7c00100,0xfc230400,0x11000007,0x4000000,0x84200000,0x11000007,0x4000000,0x84400000,0x11000007,0x4000000,0x84b00000,0x11000007,0x7c00100,0x80220400,0x11000007, -0x7c00100,0x80250400,0x11000007,0xc000010,0x84448000,0x11000007,0xc000010,0x84b48000,0x11000008,0x7c00100,0x20220400,0x11000008,0x7c00100,0x20250400,0x11000008,0x7c00100, -0xc822040f,0x1100000b,0x4000000,0x4200000,0x1100000b,0x7c00100,0x20230400,0x1100000b,0x7c00100,0xfc230400,0x1100000c,0x7c00100,0x8220400,0x1100000c,0x7c00100,0x30230400, -0x1100000c,0x7c00100,0xc822040f,0x1100000e,0x4000000,0x4200000,0x1100000e,0x4000000,0xc200000,0x1100000e,0x7c00100,0x8230400,0x1100000e,0x7c00100,0x8250400,0x1100000e, -0x7c00100,0x18220400,0x1100000e,0x7c00100,0xc822040f,0x11000013,0x4000000,0xcb00000,0x11000019,0x7c00100,0x10220400,0x11000019,0x7c00100,0x20220400,0x11000019,0x7c00100, -0x20250400,0x11000019,0x7c00100,0xc822040e,0x11000019,0x7c00500,0xc822040f,0x11000023,0x7c00100,0xfc230400,0x11000027,0x4000000,0x4500000,0x11000037,0x4000000,0x84200000, -0x11000037,0x6800100,0x80962540,0x11000037,0x7c00100,0x80230400,0x11000038,0x7c00100,0x80220400,0x11000038,0x7c00100,0x80250400,0x11000039,0x4000000,0x84200000,0x11000039, -0x4000000,0x84400000,0x11000039,0xc000010,0x84448000,0x1100003a,0x4000000,0x44200000,0x1100003a,0x6800100,0x40962540,0x1100003a,0x7c00100,0x40230400,0x1100003b,0x4000000, -0x45800000,0x1100003b,0x6800000,0x41329800,0x1100003b,0x7c00100,0x41830000,0x1100003b,0x7e00100,0x41830000,0x1100003c,0x7c00100,0x40230400,0x1100003c,0x7c00100,0xc823040f, -0x1100003d,0x4000010,0x84400000,0x1100003d,0x7c00100,0x80230400,0x11000587,0x24000000,0xc400000,0x1100058d,0x24000000,0xc400000,0x11000594,0x24000006,0x7000000,0x110005d5, -0x4000400,0xc200000,0x11000d2a,0x6800000,0x21329800,0x11005000,0x4000000,0xc8810010,0x11005000,0x4000000,0xc8870010,0x11005000,0x4000000,0xc8f00010,0x11005000,0x4000000, -0xc9270010,0x11005000,0x4000000,0xc9271010,0x11005000,0x4000000,0xc9410010,0x11005000,0xc000010,0xc8848010,0x11005000,0xc000010,0xc8b48010,0x11005000,0x24000000,0x4200000, -0x11005000,0x24000000,0x4e00000,0x11005011,0x7c00300,0xc8e30001,0x11005011,0x7c40300,0x20e30000,0x11005012,0x4000000,0xc8e00003,0x110055be,0x4000000,0x4e00000,0x1100800a, -0x7c00100,0x10230400,0x11008039,0x7c00100,0x80230400,0x11010001,0x2802000,0x18962460,0x11010001,0x2802020,0x10962460,0x11010002,0x2802100,0x20962460,0x1101000b,0x2802400, -0x20962460,0x1101000e,0x2802000,0x18962460,0x11010013,0x2802400,0x28962460,0x11010013,0x2802500,0x28962460,0x11010013,0x2802500,0x30962460,0x11010037,0x2802100,0x80962460, -0x11010039,0x2802100,0x80962460,0x11010039,0x2802400,0x80962460,0x1101003a,0x2802100,0x40962460,0x1101003a,0x2806400,0x40962460,0x1101088e,0x2802000,0x18962460,0x11011001, -0x2802000,0x10962460,0x11011001,0x2802000,0x10c62460,0x11011865,0x2802000,0x20962460,0x11018039,0x2806400,0x80962460,0x14000000,0x4000000,0x4200000,0x14000000,0x4000400, -0x4200400,0x14000000,0x7c00120,0xc8220405,0x14000000,0x7c00120,0xc8250405,0x14000000,0x7c00500,0x10230400,0x14000000,0x24000000,0x4200000,0x14000000,0x24000020,0x4200000, -0x14000008,0x7c00100,0x20220400,0x14000008,0x7c00100,0x20250400,0x14000008,0x7c00100,0xfc220400,0x1400000e,0x7c00100,0x8220400,0x14000015,0x7c00100,0x8230400,0x14000019, -0x7c00100,0x8220400,0x14000019,0x7c00100,0x8250400,0x14000019,0x7c00100,0x10220400,0x14000019,0x7c00100,0x10250400,0x14000019,0x7c00100,0x20220400,0x14000019,0x7c00100, -0x20250400,0x14000019,0x7c00100,0xfc220400,0x14000019,0x7c00100,0xfc250400,0x1400003e,0x4000000,0x44400000,0x1400003e,0x4000000,0x44e00000,0x1400003e,0x4000010,0x44400000, -0x1400003e,0x6800000,0x42d29800,0x1400003e,0x6800100,0x40962540,0x1400003e,0x6800100,0x40962541,0x1400003e,0x7c00100,0x42b30400,0x1400003e,0x7c00100,0x42b30401,0x1400003e, -0xc000010,0x44448000,0x14000057,0x4000000,0x44200000,0x14000057,0x4000010,0x45071400,0x14000057,0x6800000,0x41329800,0x14000057,0x7c00100,0x40230400,0x14000057,0x7c00100, -0x48230400,0x14000057,0x7c00500,0x40230400,0x14000057,0x7c00900,0x48230400,0x14000057,0xc000010,0x44b48000,0x1400005a,0x4000000,0x84500000,0x1400005a,0x7c00100,0x80230400, -0x1400005a,0xc000010,0x84b48000,0x1400005b,0x4000000,0x84200000,0x1400005b,0x4000010,0x84400000,0x1400005b,0x7c00100,0x80230400,0x14000065,0x4000010,0x84400000,0x14000065, -0x7c00100,0x80230400,0x140055be,0x4000000,0x4200000,0x1400800a,0x7c00100,0xfc230400,0x1400803e,0x7c00100,0x42b30400,0x1400803e,0x7c00100,0x42b30401,0x14010001,0x2802020, -0x10962460,0x14010001,0x2802400,0x10962460,0x14010013,0x2802500,0x20962460,0x14010015,0x2802100,0x8962460,0x1401003e,0x2802100,0x40962460,0x1401003e,0x2802100,0x40962461, -0x1401003e,0x2802400,0x40962460,0x1401003e,0x2802400,0x50962460,0x14010057,0x2802400,0x40962460,0x1401803e,0x2806400,0x42f62460,0x15000000,0x80020,0xc4218820,0x15000000, -0x4000000,0x4200000,0x15000000,0x4000000,0x4e00000,0x15000000,0x4000000,0xc200000,0x15000000,0x4000000,0x14200000,0x15000000,0x4000400,0x4200400,0x15000000,0x7c00500, -0x10230400,0x15000000,0x24000000,0x4200000,0x15000000,0x24000000,0x4400000,0x15000000,0x24000000,0x4810000,0x15000000,0x24000000,0x4e00000,0x15000000,0x24000000,0x5400000, -0x15000000,0x24000000,0x5410000,0x15000000,0x24000000,0x5710000,0x15000000,0x24000000,0xc400000,0x15000000,0x24000002,0x4200000,0x15000000,0x24000020,0x4200000,0x15000000, -0x24000020,0x4810000,0x15000000,0x24000020,0x5410000,0x15000000,0x24000500,0xc230400,0x15000000,0x2c000010,0xcb48000,0x15000002,0x4000000,0x5500000,0x15000002,0x4000020, -0x4200000,0x15000002,0x7c00100,0x8230400,0x15000002,0x7c00100,0x20230400,0x15000002,0x7c00100,0xfc230400,0x15000008,0x4000000,0x4200000,0x15000008,0x4000000,0xc200000, -0x15000008,0x7c00100,0x8220400,0x15000008,0x7c00100,0x8230400,0x15000008,0x7c00100,0x8250400,0x15000008,0x7c00500,0x8230400,0x1500000a,0x7c00100,0xfc230400,0x1500000a, -0x7c00500,0x8230400,0x1500000e,0x7c00100,0x8220400,0x1500000e,0x7c00100,0x8250400,0x1500000e,0x7c00100,0x10250400,0x15000019,0x7c00100,0x8220400,0x15000019,0x7c00100, -0x8230400,0x15000019,0x7c00100,0x8250400,0x15000019,0x7c00100,0x10220400,0x15000019,0x7c00100,0x10250400,0x15000019,0x7c00100,0x18220400,0x15000019,0x7c00100,0x18250400, -0x15000019,0x7c00100,0x20220400,0x15000019,0x7c00100,0x20250400,0x15000019,0x7c00100,0xc822040e,0x15000019,0x7c00100,0xc822040f,0x15000019,0x7c00100,0xfc250400,0x1500001a, -0x4000000,0x4200000,0x1500001a,0x4000000,0x5500000,0x1500001a,0x7c00100,0x8230400,0x1500001a,0x7c00100,0xfc230400,0x1500001b,0x7c00100,0x80230400,0x1500001c,0x4000000, -0x5800000,0x1500001c,0x6800000,0x21329800,0x1500001c,0x6800100,0x21862400,0x1500001c,0x6800100,0xfd862400,0x1500001c,0x6800100,0xfd862540,0x1500001c,0x6800500,0x21862400, -0x1500001c,0x6800500,0xfd862400,0x15000023,0x7c00100,0x10230400,0x15000024,0x4000000,0x4200000,0x15000024,0x7c00100,0x8230400,0x15000027,0x4000000,0x4200000,0x15000027, -0x4000000,0x4400000,0x15000027,0x4000000,0x4500000,0x15000027,0x7c00100,0x20230400,0x15000042,0x4000000,0x44e00000,0x15000042,0x6800000,0x42d29800,0x15000042,0x6800100, -0x40962540,0x15000042,0x7c00100,0x40430400,0x15000042,0x7c00100,0x42d30400,0x15000042,0xc000010,0x44448000,0x1500004f,0x6800000,0x41329800,0x1500004f,0x7c00100,0x40230400, -0x1500004f,0xc000010,0x44448000,0x15000052,0x4000010,0x44400000,0x15000052,0x6800000,0x41329800,0x15000052,0x6800100,0x40962540,0x15000052,0x7c00100,0x40230400,0x15000052, -0xc000010,0x44448000,0x15000063,0x4000010,0x44400000,0x15000063,0x6800000,0x41329800,0x15000063,0x7c00100,0x40230400,0x15000063,0x7c00100,0x48230400,0x15000063,0x7c00900, -0x40230400,0x15000063,0xc000010,0x44448000,0x15000063,0xc000010,0x44b48000,0x15000068,0x7c00100,0x80230400,0x1500006b,0x7c00100,0x80230400,0x1500006c,0x4000000,0x84200000, -0x1500006c,0x7c00100,0x80230400,0x1500006d,0x6800000,0x41329800,0x1500006d,0x7c00100,0x40230400,0x1500006d,0x7c00500,0x40230400,0x1500006d,0x7c00d00,0x40230400,0x1500006d, -0xc000010,0x44448000,0x1500006e,0x4000000,0x84200000,0x1500006e,0x6800100,0x80962540,0x1500006e,0x7c00100,0x80230400,0x1500006f,0x6800000,0x41329800,0x1500006f,0x6800100, -0x40962540,0x1500006f,0x7c00100,0x40230400,0x1500006f,0xc000010,0x44448000,0x15000071,0x6800000,0x41329800,0x15000071,0x6800100,0x40962540,0x15000596,0x24000000,0x84400000, -0x15000616,0x4000400,0x4400000,0x15004000,0x24000020,0x4810000,0x15004000,0x24000020,0x5410000,0x15005000,0x4000000,0x4e00000,0x15005000,0x24000000,0x4200000,0x15005005, -0x7c00100,0x40e30400,0x15005011,0x7c40300,0x20e30000,0x150055be,0x4000000,0x4e00000,0x1500801c,0x7c00100,0x21830000,0x1500801c,0x7c00100,0xfd830000,0x15008024,0x7c00100, -0x8230400,0x15008071,0x7c00100,0x40230400,0x15010001,0x2802000,0x8962460,0x15010001,0x2802000,0x10962460,0x15010001,0x2802000,0x18962460,0x15010001,0x2802100,0x18962460, -0x15010001,0x2802400,0x10962460,0x15010001,0x2802400,0x10c62460,0x15010001,0x2802400,0x18962460,0x15010002,0x2802100,0x20962460,0x15010008,0x2000,0xc962460,0x15010008, -0x2802100,0x8962460,0x15010008,0x2802400,0x20962460,0x15010010,0x2802100,0x20962460,0x1501001a,0x2802100,0x20962460,0x1501001c,0x2802100,0x21862460,0x1501001c,0x2802100, -0xfd862460,0x1501001c,0x2802500,0x21862460,0x1501001c,0x2806400,0xfd862460,0x1501001f,0x2802100,0x20962460,0x15010024,0x2802100,0x20962460,0x15010042,0x2802100,0x40962460, -0x1501004f,0x2802100,0x40962460,0x1501004f,0x2802400,0x40962460,0x15010052,0x2802100,0x40962460,0x15010052,0x2802400,0x40962460,0x15010052,0x2802d00,0x40962460,0x1501006e, -0x2802100,0x80962460,0x1501006e,0x2806400,0x80962460,0x1501006f,0x2806400,0x40962460,0x15010071,0x2802100,0x40962460,0x15010071,0x2806400,0x40962460,0x15010991,0x2802000, -0x10962460,0x15010c9c,0x2802400,0x18962460,0x15010c9c,0x2802400,0x20962460,0x16000000,0x4000000,0x4200000,0x16000000,0x4000000,0x5500000,0x16000000,0x4000000,0x5600000, -0x16000000,0x4000000,0xc8100006,0x16000000,0x4000000,0xc8200003,0x16000000,0x24000000,0x4200000,0x16000002,0x4000000,0x4200000,0x16000004,0x4000000,0x5600000,0x16000007, -0x7c00100,0x80220400,0x16000007,0x7c00100,0x80250400,0x16000008,0x7c00100,0xfc220400,0x16000008,0x7c00100,0xfc250400,0x1600000a,0x4000000,0xc200000,0x1600000a,0x6800100, -0x8962540,0x1600000a,0x7c00100,0x8230400,0x16000012,0x7c00100,0xa230500,0x16000012,0x7c00100,0xa330520,0x16000019,0x7c00100,0x8250400,0x1600001c,0x4000000,0x5800000, -0x1600001c,0x6800100,0x21862400,0x1600001c,0x6800500,0x21862400,0x1600001c,0x6800500,0xfd862400,0x1600001c,0x7c00100,0x21830000,0x1600001c,0x7c00900,0x21830000,0x16000028, -0x4000002,0x47000000,0x16000028,0x7c00100,0x40230400,0x1600003b,0x6800000,0x41329800,0x1600003b,0x7c00100,0x41830000,0x16000047,0x7c00100,0x80230400,0x16000047,0x7c00100, -0x80830400,0x16000047,0x7c00100,0x81430400,0x1600004e,0x4000000,0x44e00000,0x1600004e,0x4000010,0x44400000,0x1600004e,0x6800000,0x42d29800,0x1600004e,0x6800100,0x40962540, -0x1600004e,0x7c00100,0x42b30400,0x1600004e,0xc000010,0x44448000,0x16000058,0x7c00100,0x80230400,0x1600005b,0x4000000,0x84200000,0x1600006a,0x4000000,0x45800000,0x1600006a, -0x6800000,0x41329800,0x1600006a,0x6800100,0x41862400,0x1600006a,0x6800100,0x41862540,0x1600006a,0x7c00900,0x41830000,0x1600006a,0xc000010,0x45848000,0x16000073,0x6800000, -0x41329800,0x16000073,0x6800100,0x40962540,0x16000073,0x6800400,0x40962540,0x16000073,0x7c00100,0x40230400,0x16000073,0xc000010,0x44448000,0x16000074,0x4000000,0x84200000, -0x16000074,0x4000010,0x84400000,0x16000074,0x7c00100,0x80230400,0x16000075,0x4000000,0x84400000,0x16000075,0x4000010,0x84400000,0x16000075,0x7c00100,0x80230400,0x16000078, -0x4000000,0x84200000,0x16000078,0x6800100,0x80962540,0x16000078,0x7c00100,0x80230400,0x16000078,0x7c00100,0x80230401,0x16000078,0xc000010,0x84448000,0x16000078,0x80000000, -0x85329960,0x1600007a,0x4000000,0x84200000,0x1600007a,0x7c00100,0x80230400,0x1600007d,0x4000000,0x84200000,0x1600007d,0x7c00100,0x80230400,0x1600007e,0x4000000,0x84200000, -0x1600007e,0x4000010,0x84200000,0x1600007e,0x7c00100,0x80230400,0x1600007e,0xc000010,0x84248000,0x1600007f,0x4000000,0x45800000,0x1600007f,0x4000010,0x45800000,0x1600007f, -0x7c00100,0x41830000,0x1600007f,0x7c00500,0x41830000,0x1600007f,0x7c00900,0x41830000,0x1600007f,0x7e00100,0x41830000,0x16000082,0x4000000,0x44200000,0x16000082,0x4000010, -0x44400000,0x16000082,0x7c00100,0x40230400,0x16000082,0xc000010,0x44448000,0x16000083,0x4000010,0x44400000,0x16000083,0x7c00100,0x40230400,0x16000083,0xc000010,0x44448000, -0x16000085,0x4000000,0x84200000,0x16000085,0x7c00100,0x80230400,0x16000540,0x7c00100,0x8230400,0x16000542,0x4000400,0xc200000,0x1600055c,0x6800400,0x8962540,0x16000561, -0x7c00100,0x8230400,0x16000564,0x7c00100,0x8230400,0x16000567,0x7c00100,0x8230400,0x1600056d,0x7c00100,0x8230400,0x16000598,0x24000000,0xc400000,0x160005d7,0x4000000, -0x4200000,0x160005e7,0x4000000,0x4200000,0x160005f6,0x4000000,0x4200000,0x16000601,0x4000000,0x5500000,0x16000619,0x7c00900,0x60430400,0x16000e14,0x7c00100,0x8230400, -0x16001000,0x4000000,0x4100000,0x16001000,0x4000000,0xc8100002,0x16001000,0x4000000,0xc8100003,0x16001000,0x4000000,0xc8100006,0x16001000,0x4000000,0xc810000d,0x16001000, -0x4000100,0x4150400,0x16001000,0x4000100,0xc815040d,0x16001000,0x24000000,0x4100000,0x16001000,0x24000000,0x4e00000,0x16001000,0x24000000,0x6800000,0x16005000,0x4000000, -0xc8e00002,0x16005000,0x4000000,0xc8e0000d,0x16005000,0x24000000,0x4100000,0x16005000,0x24000000,0x4e00000,0x16005011,0x7c00300,0xc8e30001,0x16005011,0x7c40300,0x20e30000, -0x16005012,0x7c00100,0xa130480,0x16005014,0x4000000,0xc8e0000d,0x160055be,0x4000000,0xc8e00003,0x1600800a,0x7c00100,0x20230400,0x1600801c,0x7c00100,0x21830000,0x1600804e, -0x7c00100,0x42b30400,0x1600806a,0x7c00100,0x41830000,0x16008073,0x7c00100,0x40230400,0x16010001,0x2802400,0x10962460,0x16010007,0x2802400,0x80962460,0x16010007,0x2802400, -0x90962460,0x1601000a,0x2802100,0x20962460,0x1601000a,0x2802400,0x8962460,0x1601001c,0x2802100,0x21862460,0x1601004e,0x2802100,0x40962460,0x1601004e,0x2802400,0x40962460, -0x1601006a,0x2802100,0x41862460,0x1601006a,0x2802400,0x40962460,0x1601006a,0x2802400,0x41862460,0x16010073,0x2802100,0x40962460,0x16010073,0x2806400,0x40962460,0x16010078, -0x2802100,0x80962460,0x16010078,0x2802400,0x80962460,0x16010078,0x2806400,0x80962460,0x1601007e,0x2802000,0x80962460,0x1601007e,0x2802100,0x80962460,0x1601007e,0x2802400, -0x80962460,0x1601007f,0x2802100,0x41862460,0x1601007f,0x2802400,0x41862460,0x16010082,0x2802400,0x40962460,0x16010940,0x2802400,0x8962460,0x16010941,0x2802400,0x8962460, -0x16010945,0x2802400,0x8962460,0x1601094a,0x2802400,0x8962460,0x1601094d,0x2802400,0x8962460,0x16010950,0x2802400,0x8962460,0x16010954,0x2802400,0x8962460,0x16010956, -0x2802400,0x8962460,0x1601095e,0x2802400,0x8962460,0x16010969,0x2802400,0x8962460,0x16010e10,0x2802400,0x8962460,0x1601804e,0x2806400,0x42f62460,0x1601806a,0x2806400, -0x41862460,0x18000000,0x4000000,0x4200000,0x18000000,0x4000000,0x4e00000,0x18000000,0x4000000,0x5600000,0x18000000,0x4000000,0x6703580,0x18000000,0x24000000,0x4200000, -0x18000000,0x24000000,0x4e00000,0x18000000,0x24000000,0x5710000,0x18000000,0x24000020,0x4200000,0x18000002,0x4000000,0x14200000,0x18000002,0x7c00100,0xfc230400,0x18000008, -0x7c00100,0x8220400,0x18000008,0x7c00100,0x8250400,0x1800000a,0x6800100,0xfc962540,0x1800000a,0x7c00100,0xfc230400,0x1800000b,0x7c00100,0x20230400,0x18000019,0x7c00100, -0x8220400,0x18000019,0x7c00100,0x8250400,0x18000019,0x7c00100,0x10220400,0x18000019,0x7c00100,0xc822040e,0x18000019,0x7c00100,0xfc250400,0x1800001a,0x7c00100,0x8230560, -0x1800001f,0x4000000,0x4200000,0x18000027,0x4000000,0x4c00000,0x18000027,0x7c00100,0x8230400,0x1800003c,0x4000000,0x44400000,0x1800003f,0x4000000,0x44200000,0x1800003f, -0x6800100,0x40962540,0x1800003f,0x7c00100,0x42d30400,0x18000041,0x4000000,0x84e00000,0x18000041,0x4000010,0x84e00000,0x18000041,0x6800000,0x82d29800,0x18000041,0x6800100, -0x80962540,0x18000041,0x7c00100,0x82b30400,0x18000041,0x7c00100,0x82c30400,0x18000041,0xc000010,0x84448000,0x18000054,0x4000010,0x44200000,0x18000054,0x7c00100,0x40230400, -0x18000082,0x7c00100,0x40230400,0x18001000,0x4000000,0x4100000,0x18001000,0x4000000,0xc810000d,0x18001000,0x4000100,0x4150400,0x18001000,0x4000100,0xc815040d,0x18005000, -0x4000000,0x4100000,0x18005000,0x4000000,0x4200000,0x18005000,0x4000000,0x4e00000,0x18005000,0x4000000,0x6800000,0x18005000,0x4000000,0xc8e0000d,0x18005000,0x24000000, -0x4200000,0x18005000,0x24000000,0x4e00000,0x18005000,0x24000000,0x6800000,0x18005005,0x7c00100,0x40e30400,0x18005011,0x7c40300,0x20e30000,0x18005014,0x7c00100,0x8e30000, -0x18005016,0x7c00100,0x8e30c00,0x180055be,0x4000000,0xc8e00003,0x1800801a,0x7c00100,0x8230400,0x1800801a,0x7c00100,0x20230400,0x18010001,0x2802400,0x10c62460,0x18010002, -0x2802100,0x20962460,0x1801000a,0x2802100,0xfc962460,0x1801000b,0x2802400,0x20962460,0x18010027,0x2802100,0x8962460,0x1801003c,0x2806000,0x40962460,0x1801003f,0x2802100, -0x40962460,0x1801003f,0x2802400,0x40962460,0x1801003f,0x2806400,0x42e62460,0x18010041,0x2802100,0x80962460,0x18010041,0x2806400,0x82f62460,0x18010054,0x2802000,0x40962460, -0x19000000,0x4000000,0x4200000,0x19000000,0x4000000,0xc820000f,0x19000000,0x24000000,0x4200000,0x19000000,0x24000000,0x4400000,0x19000000,0x24000000,0xc200000,0x19000000, -0x24000002,0x4300000,0x19000000,0x24000020,0x4200000,0x19000002,0x4000020,0x4200000,0x19000002,0x7c00100,0x20230400,0x19000002,0x7c00100,0xfc230400,0x19000002,0x7c00120, -0xc8230405,0x19000002,0x80000000,0x5329960,0x19000003,0x4000000,0x5600000,0x19000007,0x7c00100,0x80220400,0x19000007,0x7c00100,0x80250400,0x1900000c,0x7c00100,0x10220400, -0x1900000c,0x7c00100,0x20230400,0x1900000c,0x7c00100,0xfc250400,0x1900000f,0x4000000,0x4200000,0x19000018,0x7c00100,0x21830000,0x19000019,0x7c00100,0x20220400,0x19000019, -0x7c00100,0x20250400,0x19000019,0x7c00100,0xfc250400,0x19000019,0x7c00500,0xc822040f,0x1900003c,0x7c00100,0x40230400,0x19000056,0x7c00100,0x80230400,0x1900005c,0x6800100, -0x40962540,0x1900005c,0x7c00100,0x40230400,0x1900005c,0x7c00500,0x40230400,0x19000071,0x4000000,0x44200000,0x19000071,0x7c00100,0x40230400,0x19000073,0x6800100,0x40962540, -0x19000073,0x7c00100,0x40230400,0x19000073,0x7c00900,0x40230400,0x19000073,0xc000010,0x44448000,0x19000076,0x4000000,0x44400000,0x19000076,0x6800000,0x41329800,0x19000076, -0x6800100,0x40962540,0x19000076,0xc000010,0x44448000,0x1900008d,0x7c00100,0x80230400,0x19000097,0x4000000,0x84200000,0x19000097,0x4000000,0x84400000,0x19000097,0x6800000, -0x81329800,0x19000097,0x6800100,0x80962540,0x19000097,0x7c00100,0x80230400,0x19000097,0x7c00100,0x80230560,0x19000097,0xc000010,0x84448000,0x19000098,0x6800000,0x81329800, -0x19000098,0x7c00100,0x80230400,0x19000099,0x6800000,0x81329800,0x19000099,0x6800100,0x80962540,0x19000099,0x7c00100,0x80230400,0x1900055c,0x7c00100,0x8230400,0x19000578, -0x7c00100,0x8230400,0x19005000,0x4000000,0x4e00000,0x19005011,0x7c00300,0xc8e30001,0x19005011,0x7c40300,0x20e30000,0x19008071,0x7c00100,0x40230400,0x19008073,0x7c00100, -0x40230400,0x19008076,0x7c00100,0x40230400,0x19010002,0x2802400,0x20962460,0x19010002,0x2802500,0x20962460,0x19010008,0x2802100,0x8962460,0x1901005c,0x2802500,0x40962460, -0x19010071,0x2802100,0x40962460,0x19010073,0x2802100,0x40962460,0x19010076,0x2802100,0x40962460,0x19010076,0x2802100,0x40962461,0x19010076,0x2806400,0x40962460,0x19010097, -0x2802100,0x80962460,0x19010097,0x2806400,0x80962460,0x19010099,0x2802100,0x80962460,0x19010099,0x2802400,0x80962460,0x19010099,0x2806400,0x80962460,0x1901097a,0x2802400, -0x8962460,0x19018071,0x2806400,0x40962460,0x19018073,0x2806400,0x40962460,0x19018076,0x2806400,0x40962460,0x1a000000,0x4000000,0x5600000,0x1b000000,0x80000,0xc4918820, -0x1b000caf,0x80000,0xc4918820,0x1c000000,0x4000000,0x4100000,0x1c000000,0x4000000,0x4200000,0x1c000000,0x4000000,0x4e00000,0x1c000000,0x4000000,0x5200000,0x1c000000, -0x4000000,0x5500000,0x1c000000,0x4000000,0x5600000,0x1c000000,0x4000000,0x5710000,0x1c000000,0x4000000,0x6800000,0x1c000000,0x4000400,0x4200400,0x1c000000,0x24000000, -0x4200000,0x1c000000,0x24000000,0x4400000,0x1c000000,0x24000000,0x4e00000,0x1c000000,0x24000002,0x7000000,0x1c000000,0x24000008,0x5410000,0x1c000000,0x80000000,0x5329960, -0x1c000002,0x7c00100,0x8230400,0x1c000002,0x7c00100,0x20230400,0x1c000003,0x4000000,0x4200000,0x1c000004,0x7c00100,0x8230400,0x1c000008,0x7c00100,0x8220400,0x1c000008, -0x7c00100,0x8250400,0x1c000008,0x7c00500,0xc822040f,0x1c00000e,0x4000000,0x4200000,0x1c00000e,0x7c00100,0x8220400,0x1c00000e,0x7c00100,0x8250400,0x1c000019,0x7c00100, -0x8220400,0x1c000019,0x7c00100,0x8230400,0x1c000019,0x7c00100,0x8250400,0x1c000019,0x7c00500,0xc822040f,0x1c00001c,0x6800000,0x21329800,0x1c00001c,0x6800500,0x21862400, -0x1c00001c,0x7c00900,0x9830000,0x1c00001e,0x7c00100,0x80230400,0x1c000020,0x7c00100,0x80230400,0x1c000021,0x4000000,0x4200000,0x1c000021,0x6800000,0x21329800,0x1c000030, -0x7c00100,0x40230400,0x1c00004b,0x4000000,0x84200000,0x1c00004b,0x4000010,0x84400000,0x1c00004b,0x6800000,0x81329800,0x1c00004b,0x7c00100,0x80230400,0x1c00004b,0x7c00900, -0x80230400,0x1c00004b,0xc000010,0x84448000,0x1c000053,0x7c00100,0x80230400,0x1c000059,0x7c00100,0x80230400,0x1c000065,0x4000010,0x84400000,0x1c000065,0x7c00100,0x80230400, -0x1c000079,0x4000000,0x84200000,0x1c000079,0x4000000,0x84f00000,0x1c000079,0x4000010,0x84400000,0x1c000079,0x7c00100,0x80230400,0x1c00007b,0x4000000,0x84200000,0x1c00007b, -0x4000010,0x84200000,0x1c00007b,0x7c00100,0x80230400,0x1c000086,0x7c00100,0x80230400,0x1c000086,0xc000010,0x84448000,0x1c000087,0x4000000,0x84200000,0x1c000087,0x7c00100, -0x80230400,0x1c000087,0xc000010,0x84448000,0x1c000088,0x7c00100,0x80230400,0x1c000089,0x6800100,0x80962540,0x1c000089,0x6800100,0x80962541,0x1c000089,0x7c00100,0x80430400, -0x1c000089,0x7c00100,0x82b30400,0x1c000089,0x7c00100,0x82d30400,0x1c000089,0x7c00900,0x80430400,0x1c00008c,0x4000000,0x84200000,0x1c00008c,0x7c00100,0x80230400,0x1c00008e, -0x4000000,0x84200000,0x1c00008e,0x7c00100,0x80230400,0x1c00008f,0x4000000,0x84200000,0x1c00008f,0x7c00100,0x80230400,0x1c000090,0x4000000,0x84200000,0x1c000090,0x7c00100, -0x80230400,0x1c000091,0x6800000,0x81329800,0x1c000091,0x6800100,0x80962540,0x1c000091,0x7c00100,0x80230400,0x1c000092,0x4000000,0x84200000,0x1c000092,0x6800000,0x81329800, -0x1c000092,0x7c00100,0x80220400,0x1c000092,0x7c00100,0x80230400,0x1c000092,0x7c00100,0x80250400,0x1c000095,0x6800000,0xa1329800,0x1c000095,0x7c00100,0xa0230400,0x1c000095, -0xc000010,0x84448000,0x1c000097,0x7c00100,0x80230400,0x1c000097,0xc000010,0x84248000,0x1c00009d,0x4000000,0x84200000,0x1c00009d,0x4000010,0x84200000,0x1c00009d,0x6800100, -0x80962540,0x1c00009d,0x7c00100,0x80230400,0x1c00009d,0xc000010,0x84448000,0x1c00009e,0x4000000,0x84200000,0x1c00009e,0x6800000,0x81329800,0x1c00009e,0x6800100,0x80962540, -0x1c00009e,0x6800100,0x80962541,0x1c00009e,0x7c00100,0x80230400,0x1c00009f,0x4000000,0x84200000,0x1c00009f,0x7c00100,0x80230400,0x1c0000a0,0x4000000,0x84200000,0x1c0000a0, -0x4000000,0x84500000,0x1c0000a0,0x7c00100,0x80230400,0x1c0000a3,0x4000000,0x84200000,0x1c0000a3,0x6800000,0x81329800,0x1c0000a3,0x6800100,0x80962540,0x1c0000a3,0x7c00100, -0x80230400,0x1c0000a3,0xc000010,0x84448000,0x1c0000a5,0x7c00100,0x80230400,0x1c0000a6,0x4000000,0x84500000,0x1c0000a6,0x4000010,0x84b00000,0x1c0000a6,0x4000800,0x84200000, -0x1c0000a6,0x6800100,0x80962540,0x1c0000a6,0x6800100,0x80962541,0x1c0000a6,0x7c00100,0x80230400,0x1c0000a6,0xc000010,0x84448000,0x1c00045f,0x80000,0xc4918820,0x1c00045f, -0x2c000010,0x84448000,0x1c00059f,0x24000010,0x4400000,0x1c000629,0x4000000,0xc200000,0x1c000e2d,0x4000010,0x84400000,0x1c000e2f,0x6800100,0xfc962540,0x1c005000,0x4000000, -0x4e00000,0x1c005000,0x4000000,0x6800000,0x1c00800a,0x7c00100,0x8230400,0x1c00801c,0x7c00100,0x9830000,0x1c00801c,0x7c00100,0x21830000,0x1c008024,0x7c00100,0x8230400, -0x1c010001,0x2400,0x4962460,0x1c010001,0x2802100,0x10962460,0x1c010001,0x2802400,0x8962460,0x1c010001,0x2802400,0x10962460,0x1c010001,0x2802400,0x10c62460,0x1c010002, -0x2802100,0x20962460,0x1c010015,0x2802100,0x8962460,0x1c01001a,0x2802100,0x8962460,0x1c01001c,0x2802500,0x9862460,0x1c01001c,0x2802500,0x21862460,0x1c010024,0x2802100, -0x8962460,0x1c010041,0x2806000,0x80c62460,0x1c01004b,0x2802400,0x80962460,0x1c010059,0x2802100,0x80962460,0x1c010079,0x2802400,0x80962460,0x1c010086,0x2802400,0x80962460, -0x1c010087,0x2802000,0x80962460,0x1c010087,0x2802100,0x80962460,0x1c010089,0x2802100,0x80962460,0x1c010089,0x2802400,0x80962460,0x1c010089,0x2806400,0x82f62460,0x1c01008c, -0x2802400,0x80962460,0x1c010091,0x2802100,0x80962460,0x1c010091,0x2802400,0x80962460,0x1c010091,0x2806400,0x80962460,0x1c01009d,0x2802100,0x80962460,0x1c01009d,0x2802400, -0x80962460,0x1c01009d,0x2802900,0x80962460,0x1c01009d,0x2806400,0x80962460,0x1c01009e,0x2802100,0x80962460,0x1c01009e,0x2802400,0x80962460,0x1c01009e,0x2806400,0x80962460, -0x1c0100a0,0x2802400,0x80962460,0x1c0100a3,0x2802100,0x80962460,0x1c0100a3,0x2806400,0x80962460,0x1c0100a6,0x2802100,0x80962460,0x1c0100a6,0x2802400,0x80962460,0x1c0100a6, -0x2806400,0x80962460,0x1c010978,0x2802400,0x8962460,0x1c010a29,0x2802400,0x8962460,0x1c010e2f,0x2802100,0xfc962460,0x1c010e2f,0x2802400,0xfc962460,0x20000000,0x4000000, -0x5500000,0x20000000,0x4000000,0x24200000,0x20000000,0x4000000,0x24e00000,0x20000000,0x4000000,0x34200000,0x20000000,0x24000000,0x24200000,0x20000002,0x7c00100,0x20230400, -0x20000006,0x7c00100,0x40220400,0x20000006,0x7c00100,0x40250400,0x2000000a,0x4000000,0x2c500000,0x2000000a,0x7c00100,0x28230400,0x20000019,0x7c00100,0x20220400,0x20000019, -0x7c00100,0x20230400,0x20000019,0x7c00100,0x20250400,0x2000001a,0x7c00100,0x8230400,0x2000004c,0x4000000,0x84200000,0x2000004c,0x7c00100,0x80220400,0x2000004c,0x7c00100, -0x80250400,0x20000065,0x7c00100,0x80230400,0x20000070,0x4000000,0x84200000,0x20000070,0x4000010,0x84400000,0x20000070,0xc000010,0x84448000,0x20000089,0x7c00100,0x82d30400, -0x2000008d,0x4000000,0x84200000,0x20000097,0x4000000,0x84400000,0x20000097,0x4000000,0x84500000,0x20000097,0x7c00100,0x80230400,0x20000097,0xc000010,0x84448000,0x2000009c, -0x7c00100,0x80230400,0x2000009c,0x7c00100,0x80830400,0x2000009c,0x7c00100,0x81430400,0x200000a1,0x4000000,0x85800000,0x200000a1,0x6800000,0x81329800,0x200000a1,0x6800100, -0x81862400,0x200000a1,0x6800100,0x81862540,0x200000a1,0x7c00100,0x81830000,0x200000a1,0xc000010,0x84448000,0x200000a2,0x4000000,0x84200000,0x200000a2,0x7c00100,0x80230400, -0x200000a4,0x7c00100,0x80230400,0x200000a4,0xc000010,0x84448000,0x200000a6,0x7c00100,0x80230400,0x200000a6,0xc000010,0x84448000,0x20005000,0x4000000,0x4e00000,0x20005000, -0x4000000,0x6800000,0x20005011,0x7c40300,0x20e30000,0x2000800f,0x7c00100,0x20230400,0x20008024,0x7c00100,0x20230400,0x20010002,0x2802500,0x20962460,0x20010008,0x2802100, -0x28962460,0x20010008,0x2802400,0x30962460,0x20010008,0x2802400,0x30c62460,0x20010070,0x2802000,0x80962460,0x20010089,0x2802100,0x80962460,0x20010097,0x2802000,0x80962460, -0x20010097,0x2802400,0x80962460,0x200100a1,0x2802100,0x81862460,0x200100a1,0x2806400,0x81862460,0x200100a6,0x2802100,0x80962460,0x20015000,0x4000000,0x6902460,0x24000000, -0x4000000,0x4e00000,0x24000000,0x24000000,0x4200000,0x24000000,0x24000000,0x4400000,0x24000000,0x80000000,0x5329960,0x24000002,0x7c00100,0x20230400,0x24000002,0x7c00100, -0xfc230400,0x24000008,0x7c00100,0x8220400,0x2400000e,0x4000000,0x4200000,0x24000015,0x7c00100,0x20230400,0x24000019,0x7c00100,0x10250400,0x2400001a,0x4000000,0x4200000, -0x2400001a,0x7c00100,0x20230400,0x2400001b,0x4000000,0x84500000,0x240000a7,0x4000000,0x45400000,0x240000a7,0x6800000,0x41329800,0x240000a7,0x7c00100,0x40220400,0x240000a7, -0x7c00100,0x40250400,0x240000a8,0x4000000,0x84200000,0x240000a8,0x4000000,0x84400000,0x240000a8,0x4000010,0x84400000,0x240000a8,0x6800000,0x81329800,0x240000a8,0x6800100, -0x80962540,0x240000a8,0x7c00100,0x80230400,0x240000a8,0xc000010,0x84448000,0x240000a9,0x4000000,0x84500000,0x240000a9,0x4000010,0x84b00000,0x240000a9,0x6800100,0x80962540, -0x240000a9,0x7c00100,0x80230400,0x240000aa,0x4000000,0x44200000,0x240000aa,0x4000000,0x44400000,0x240000aa,0x4000010,0x44400000,0x240000aa,0x6800000,0x41329800,0x240000aa, -0x6800100,0x40962540,0x240000aa,0x7c00100,0x40230400,0x240000aa,0xc000010,0x44448000,0x240000ab,0x7c00100,0x40220400,0x240000ab,0x7c00100,0x40250400,0x2400049a,0x24000000, -0x4400000,0x24001000,0x4000000,0x4100000,0x24005000,0x4000000,0x4e00000,0x24005000,0x4000000,0x6800000,0x24005000,0x4000000,0xc8e0000d,0x2400509a,0x7c00300,0x80e30000, -0x2400509a,0x7c00900,0x81230400,0x24010001,0x2802400,0x10962460,0x24010002,0x2802000,0x20962460,0x24010002,0x2802100,0x20962460,0x24010038,0x2802100,0x80962460,0x2401006f, -0x2802100,0x40962460,0x2401009d,0x2802100,0x80962460,0x240100a7,0x2802100,0x40962460,0x240100a7,0x2802400,0x40962460,0x240100a7,0x2802c00,0x40962460,0x240100a8,0x2802100, -0x80962460,0x240100a8,0x2806400,0x80962460,0x240100a9,0x2802100,0x80962460,0x240100aa,0x2802100,0x40962460,0x240100aa,0x2802400,0x40962460,0x240100aa,0x2806400,0x40962460, -0x28000000,0x4000000,0x4200000,0x28000000,0x4000000,0x4e00000,0x28000000,0x4000000,0x5600000,0x28000000,0x24000000,0x4200000,0x28000000,0x24000000,0x4400000,0x28000004, -0x4000000,0x4200000,0x28000004,0x7c00100,0x8230400,0x2800001e,0x7c00100,0x80230400,0x28000022,0x7c00100,0x40230400,0x280000af,0x6800000,0x81329800,0x280000af,0x7c00100, -0x80230400,0x280000af,0x7c00100,0x80230560,0x280000b0,0x4000000,0x84400000,0x280000b0,0x4000000,0x84500000,0x280000b0,0x4000010,0x84400000,0x280000b0,0x6800100,0x80962540, -0x280000b0,0x7c00100,0x80230560,0x280000b0,0xc000010,0x84448000,0x280000b1,0x4000000,0x84200000,0x280000b1,0x4000000,0x84400000,0x280000b1,0x4000000,0x84500000,0x280000b1, -0x6800100,0x80962540,0x280000b1,0x7c00100,0x80230400,0x280000b1,0xc000010,0x84448000,0x2800057e,0x6800400,0x8962540,0x28005000,0x4000000,0x4e00000,0x28005000,0x4000000, -0x6800000,0x28005005,0x7c00100,0x48e30400,0x28005011,0x7c40300,0x20e30000,0x28005014,0x7c00100,0x8e30000,0x28005096,0x7c00300,0x80e30000,0x28005096,0x7c00900,0x81230400, -0x280080b0,0x7c00100,0x80230400,0x280080b1,0x7c00100,0x80230400,0x28010001,0x2802400,0x10962460,0x2801000f,0x2802100,0x20962460,0x2801000f,0x2802400,0x20962460,0x2801000f, -0x2802900,0x20962460,0x2801001a,0x2802100,0x20962460,0x2801001a,0x2806400,0x8962460,0x280100af,0x2802100,0x80962460,0x280100af,0x2802400,0x80962460,0x280100af,0x2806400, -0x80962460,0x280100b0,0x2802100,0x80962460,0x280100b0,0x2802800,0x80962460,0x280100b1,0x2802000,0x80962460,0x280100b1,0x2802100,0x80962460,0x280100b1,0x2806400,0x80962460, -0x2801097f,0x2802400,0x10962460,0x280180b0,0x2806400,0x80962460,0x280180b1,0x2806400,0x80962460,0x2c000000,0x4000000,0x4200000,0x2c000000,0x4000000,0x4e00000,0x2c000000, -0x4000000,0x5500000,0x2c000000,0x24000000,0x4200000,0x2c000000,0x24000000,0x4400000,0x2c000000,0x24000010,0x4400000,0x2c000003,0x7c00100,0x10220400,0x2c00000a,0x7c00100, -0x8230400,0x2c00000c,0x7c00100,0xfc230400,0x2c000010,0x4000000,0x4200000,0x2c000013,0x7c00100,0x22633800,0x2c000015,0x4000000,0x4500000,0x2c000019,0x7c00100,0x10220400, -0x2c000019,0x7c00100,0x20220400,0x2c000019,0x7c00100,0x20250400,0x2c00001b,0x7c00100,0x80230400,0x2c000039,0x4000000,0x84200000,0x2c000057,0x4000000,0x45600000,0x2c000076, -0x6800100,0x40962540,0x2c000078,0x80000000,0x85329960,0x2c0000a1,0x7c00100,0x81830000,0x2c0000b0,0x7c00100,0x80230400,0x2c0000b2,0x4000000,0x84200000,0x2c0000b2,0x6800100, -0x80962540,0x2c0000b2,0x7c00100,0x80230400,0x2c0000b3,0x6800000,0x81329800,0x2c0000b3,0x6800100,0x80962540,0x2c0000b3,0x7c00100,0x80230400,0x2c0000b4,0x6800100,0x80962540, -0x2c0000b4,0x7c00100,0x80430400,0x2c0000b4,0x7c00100,0x82d30400,0x2c0000b4,0xc000010,0x84448000,0x2c0000b5,0x4000000,0x84200000,0x2c0000b5,0x4000010,0x84400000,0x2c0000b5, -0x7c00100,0x80220400,0x2c0000b5,0x7c00100,0x80250400,0x2c0000b5,0xc000010,0x84448000,0x2c0000b6,0x6800000,0x41329800,0x2c0000b6,0x7c00100,0x40230400,0x2c0000b6,0x7c00500, -0x40230400,0x2c0000b7,0x4000000,0x84200000,0x2c0000b7,0x7c00100,0x80230400,0x2c0000b7,0xc000010,0x84248000,0x2c0000b8,0x4000000,0x84200000,0x2c0000b8,0x7c00100,0x80230400, -0x2c005000,0x4000000,0x4200000,0x2c005000,0x4000000,0x4e00000,0x2c005000,0x4000000,0x6800000,0x2c005005,0x7c00100,0x40e30400,0x2c005011,0x7c40300,0x20e30000,0x2c00509a, -0x7c00300,0x80e30000,0x2c008039,0x7c00100,0x80230400,0x2c008076,0x7c00100,0x40230400,0x2c010002,0x2802000,0x20962460,0x2c010004,0x2802000,0x20962460,0x2c01000a,0x2802100, -0x8962460,0x2c010024,0x2802100,0x20962460,0x2c010057,0x2802000,0x40962460,0x2c0100aa,0x2802000,0x40962460,0x2c0100b2,0x2802100,0x80962460,0x2c0100b2,0x2802400,0x80962460, -0x2c0100b2,0x2806400,0x80962460,0x2c0100b3,0x2802100,0x80962460,0x2c0100b3,0x2806400,0x80962460,0x2c0100b4,0x2802100,0x80962460,0x2c0100b6,0x2802500,0x40962460,0x2c0100b7, -0x2802400,0x80962460,0x2c010928,0x2802400,0x20962460,0x30000000,0x4000000,0x4200000,0x30000000,0x4000000,0xc820000f,0x30000000,0x24000000,0x4200000,0x30000000,0x24000010, -0x4400000,0x30000018,0x7c00100,0x21830000,0x30000019,0x7c00100,0x8250400,0x30000019,0x7c00100,0x10220400,0x30000019,0x7c00100,0x10250400,0x30000019,0x7c00100,0x20220400, -0x30000019,0x7c00100,0x20250400,0x30000023,0x4000000,0x4200000,0x30000023,0x4000000,0x4400000,0x30000023,0x4000000,0x5500000,0x30000024,0x4000000,0x4500000,0x30000047, -0,0x84818820,0x30000047,0,0x84c18820,0x30000047,0,0x85418820,0x3000005c,0x6800100,0x40962540,0x3000005c,0x7c00100,0x40230400,0x30000099,0x7c00100, -0x80230400,0x300000a7,0x7c00100,0x40230400,0x300000aa,0x7c00100,0x40230400,0x300000b0,0x7c00100,0x80230560,0x300000b9,0x7c00100,0x80230400,0x300000ba,0x4000000,0x44200000, -0x300000ba,0x6800000,0x41329800,0x300000ba,0x7c00100,0x40230400,0x300000ba,0x7c00900,0x40230400,0x300000bb,0x4000000,0x84500000,0x300000bb,0x6800100,0x80962540,0x300000bb, -0x7c00100,0x80230400,0x300000bc,0x4000000,0x45600000,0x300000bc,0x6800000,0x41329800,0x300000bc,0x7c00100,0x40230400,0x300004db,0x7c00100,0x80230400,0x30000d2a,0x4000000, -0x4200000,0x30005000,0x4000000,0x4e00000,0x30005000,0x4000000,0x6800000,0x30005011,0x4000000,0x5200000,0x30005011,0x7c00900,0x9230400,0x30005014,0x7c00100,0xa530000, -0x30005016,0x7c00100,0xa530c00,0x3000509a,0x7c00300,0x80e30000,0x30010018,0x2806400,0x21862460,0x3001005c,0x2802100,0x40962460,0x300100ba,0x2802400,0x40962460,0x300100bb, -0x2802100,0x80962460,0x300100bb,0x2806400,0x80962460,0x300100bc,0x2802400,0x40962460,0x310055be,0x4000000,0xc8e0000d,0x34000000,0x4000000,0x4200000,0x34000000,0x4000400, -0x4200000,0x34000000,0x6800000,0xc9329805,0x34000000,0x24000000,0x4200000,0x34000002,0x7c00100,0x20230400,0x34000002,0x7c00100,0xfc230400,0x34000019,0x7c00100,0x8220400, -0x34000019,0x7c00100,0x8250400,0x34000019,0x7c00100,0x10220400,0x34000019,0x7c00500,0xc822040f,0x3400001a,0x7c00100,0x18230400,0x34000083,0x7c00100,0x40230400,0x34000097, -0x6800100,0x80962540,0x340000aa,0x4000010,0x44400000,0x340000aa,0x7c00100,0x40230400,0x340000bd,0x4000000,0x84200000,0x340000bd,0x7c00100,0x80230400,0x340000be,0x4000000, -0x84400000,0x340000be,0x6800000,0x82d29800,0x340000be,0x6800100,0x80962540,0x340000be,0x6800100,0x80962541,0x340000be,0x7c00100,0x82c30560,0x340000be,0xc000010,0x84448000, -0x340000c0,0x4000002,0x87000000,0x340000c0,0x7c00100,0x80230400,0x34005000,0x4000000,0x4e00000,0x34005000,0x4000000,0x6800000,0x34005005,0x7c00100,0x40e30400,0x34005011, -0x7c40300,0x20e30000,0x3400509a,0x7c00300,0x80e30000,0x340050bf,0x7c00300,0x80230000,0x34008076,0x7c00100,0x40230400,0x340080be,0x7c00100,0x82b30400,0x34010001,0x2802100, -0x10962460,0x3401001f,0x2802c00,0x20962460,0x34010021,0x2802100,0x10962460,0x3401003a,0x2806400,0x40962460,0x34010097,0x2802100,0x80962460,0x340100be,0x2802100,0x80962460, -0x340100be,0x2802400,0x80962460,0x340100be,0x2806400,0x80962460,0x340100c0,0x2802100,0x80962460,0x34015011,0x2802500,0x8962460,0x340150bf,0x2802200,0x80c62460,0x340180be, -0x2806400,0x82f62460,0x38000000,0x4000000,0x5500000,0x38000000,0x4000000,0x14200000,0x38000000,0x24000000,0x5410000,0x38000000,0x24000000,0x6410000,0x38000000,0x24000002, -0x7000000,0x38000000,0x2c000010,0x4b48000,0x38000002,0x4000000,0x14200000,0x38000002,0x7c00100,0x8230400,0x38000002,0x7c00100,0x10230400,0x38000002,0x7c00100,0x20230400, -0x38000002,0x7c00500,0x10230400,0x38000002,0xc000010,0x4b48000,0x38000002,0x80000000,0x5329960,0x3800000b,0x7c00100,0xfc230400,0x38000015,0x7c00100,0x20230400,0x38000019, -0x7c00100,0x8220400,0x38000019,0x7c00100,0x8250400,0x38000019,0x7c00100,0x10220400,0x38000019,0x7c00100,0x10230400,0x38000019,0x7c00100,0xc822040f,0x38000019,0x7c00500, -0x20220400,0x38000019,0x7c00500,0xc822040f,0x38000019,0x7c00d00,0xc823040f,0x38000024,0x7c00100,0x20230400,0x38000028,0x7c00100,0x40230400,0x3800002a,0x7c00100,0x80230400, -0x38000038,0x7c00100,0x80220400,0x38000038,0x7c00100,0x80250400,0x3800003e,0xc000010,0x44448000,0x38000041,0x7c00100,0x82b30400,0x38000099,0x4000000,0x84200000,0x380000a1, -0x7c00100,0x81830000,0x380000c1,0x4000000,0x84200000,0x380000c1,0x7c00100,0x80230400,0x380000c2,0x7c00100,0x80230400,0x380000c2,0xc000010,0x84248000,0x380000c3,0x6800000, -0x81329800,0x380000c3,0x7c00100,0x80230400,0x380000c4,0x7c00100,0x80230400,0x380000c5,0x7c00100,0x80220400,0x380000c5,0x7c00100,0x80250400,0x38005000,0x4000000,0x4e00000, -0x38005000,0x4000000,0x6800000,0x38005011,0x7c40300,0x20e30000,0x38005014,0x7c00100,0x8e30000,0x38005016,0x7c00100,0x8e30c00,0x38005016,0x7c00500,0x20230c00,0x3800803e, -0x7c00100,0x42b30400,0x38010001,0x2802100,0x20962460,0x38010001,0x2802400,0x10962460,0x38010001,0x2802400,0x20962460,0x38010002,0x2802400,0x20962460,0x3801001b,0x12882000, -0xc4962460,0x38010024,0x2802400,0x20962460,0x3801002a,0x2806400,0x80962460,0x38010041,0x2802100,0x80962460,0x38010041,0x2806400,0x80962460,0x38010078,0x2802100,0x80962460, -0x380100c2,0x2802400,0x80962460,0x380100c4,0x2802400,0x80962460,0x38010880,0x2802400,0x50962460,0x3c000000,0x4000000,0x4200000,0x3c000000,0x4000000,0x4e00000,0x3c000008, -0x7c00500,0xc822040e,0x3c000008,0x7c00500,0xc822040f,0x3c00000a,0x4000000,0x4500000,0x3c000015,0x6800100,0x20962540,0x3c000019,0x7c00100,0x10220400,0x3c000047,0, -0x84818820,0x3c000047,0,0x84c18820,0x3c000047,0,0x85418820,0x3c000047,0x7c00100,0x80230400,0x3c000047,0x7c00100,0x81430400,0x3c00009d,0x7c00100,0x80230400, -0x3c0000c6,0x4000000,0x84e00000,0x3c0000c6,0x6800000,0x82d29800,0x3c0000c6,0x6800100,0x80962540,0x3c0000c6,0x7c00100,0x82c30560,0x3c0000c6,0xc000010,0x84448000,0x3c0000c7, -0x6800000,0x81329800,0x3c0000c7,0x7c00100,0x80230400,0x3c005000,0x4000000,0x4e00000,0x3c005000,0x4000000,0x6800000,0x3c005011,0x7c40300,0x20e30000,0x3c005014,0x7c00100, -0xa530000,0x3c005016,0x7c00100,0xa530c00,0x3c0080c6,0x7c00100,0x82b30400,0x3c010002,0x2802400,0x20962460,0x3c010008,0x2802100,0x8962460,0x3c010018,0x2802000,0x21862460, -0x3c010047,0x2802000,0x80962460,0x3c010047,0x2802400,0x80962460,0x3c01009d,0x2802100,0x80962460,0x3c0100c6,0x2802100,0x80962460,0x3c0100c6,0x2806400,0x80962460,0x3c0100c7, -0x2802000,0x80962460,0x3c0180c6,0x2806400,0x82f62460,0x3d005011,0x7c40300,0x20e30000,0x3d0055a2,0x4000000,0x4e00000,0x3d0055a2,0x4008000,0x4e00000,0x40000000,0x4000000, -0x4200000,0x40000000,0x4000000,0xc8200005,0x40000000,0x6800000,0xc9329805,0x40000000,0x24000000,0x4200000,0x40000002,0x7c00100,0x20230400,0x40000008,0x7c00100,0x20220400, -0x40000008,0x7c00100,0x20250400,0x40000019,0x7c00100,0x20220400,0x40000019,0x7c00100,0x20250400,0x4000001c,0x6800000,0x21329800,0x4000003e,0xc000010,0x44448000,0x40000047, -0x7c00100,0x80230400,0x400000c9,0x4000002,0x87000000,0x400000c9,0x4000020,0x84200000,0x400000c9,0x6800000,0x81329800,0x400000c9,0x7c00100,0x80220400,0x400000c9,0x7c00100, -0x80230400,0x400000c9,0x7c00100,0x80250400,0x400000c9,0x7c00900,0x80230400,0x400000c9,0x7c00d00,0x80230400,0x400000ca,0x6800000,0x82d29800,0x400000ca,0x6800100,0x80962540, -0x400000ca,0x7c00100,0x82d30400,0x400000cb,0x4000000,0x84200000,0x400000cb,0x6800000,0x81329800,0x400000cb,0x7c00100,0x80230400,0x400000cb,0x7c00100,0x80230520,0x400000cb, -0x7c00100,0x80230521,0x400000cb,0x7c00500,0x80230400,0x400000cb,0xc000010,0x84448000,0x400000cc,0x4000000,0x84200000,0x400000cc,0x6800000,0x81329800,0x400000cc,0x7c00100, -0x80230400,0x400000cd,0x4000000,0x84200000,0x400000cd,0x6800000,0x81329800,0x400000cd,0x7c00100,0x80230400,0x400000ce,0x7c00100,0x80230400,0x400000ce,0x7c00100,0x80230401, -0x400000cf,0x4000000,0x84e00000,0x400000cf,0x6800100,0x80962540,0x400000cf,0x7c00100,0x80e30400,0x400000cf,0x7c00100,0x82c30560,0x400000cf,0x7c00d00,0x80e30400,0x400000cf, -0xc000010,0x84e48000,0x40005000,0x4000000,0x4e00000,0x400050bf,0x7c00300,0x80230000,0x400055be,0x4000000,0x4e00000,0x400080cf,0x7c00100,0x82b30400,0x400080cf,0x7c00100, -0x82d30400,0x400080cf,0x7c00100,0x82d30401,0x40010002,0x2802100,0x20962460,0x400100c6,0x2802400,0x80962460,0x400100c9,0x2802400,0x80962460,0x400100c9,0x2802500,0x80962460, -0x400100c9,0x2802c00,0x80962460,0x400100ca,0x2802100,0x80962460,0x400100ca,0x2802100,0x80962461,0x400100ca,0x2806400,0x80962460,0x400100cc,0x2802400,0x80962460,0x400100cc, -0x2802c00,0x80962460,0x400100cf,0x2802100,0x80962460,0x400100cf,0x2802100,0x80962461,0x400100cf,0x2802400,0x80962460,0x400100cf,0x2802c00,0x80962460,0x400100cf,0x2806400, -0x80962460,0x400180cf,0x2806400,0x82f62460,0x44000000,0x4000000,0x4200000,0x44000000,0x4000000,0x5600000,0x44000000,0x4000020,0x4200000,0x44000000,0x24000000,0x4200000, -0x44000002,0x4000000,0x4200000,0x44000002,0x4000000,0x4400000,0x44000002,0x4000000,0x14200000,0x44000002,0x7c00100,0x10230400,0x44000002,0x7c00100,0x20230400,0x44000002, -0x7c00100,0xfc230400,0x44000015,0x7c00100,0x8230400,0x44000019,0x7c00100,0x8250400,0x44000019,0x7c00100,0x20220400,0x44000019,0x7c00100,0x20250400,0x44000019,0x7c00500, -0xc822040f,0x44000024,0x7c00100,0x8230400,0x44000097,0x6800100,0x80962540,0x440000d0,0x7c00100,0x80220400,0x440000d0,0x7c00100,0x80250400,0x440000d1,0x7c00100,0x80230400, -0x440000d2,0x7c00100,0x80230400,0x440000d3,0x6800000,0x81329800,0x440000d3,0x7c00100,0x80230400,0x440000d3,0x7c00d00,0x80230400,0x44005000,0x4000000,0x4e00000,0x44005011, -0x7c00300,0x10e30000,0x44005011,0x7c00b00,0x11230000,0x44005011,0x7c40300,0x20e30000,0x4400509a,0x7c00300,0x80e30000,0x44010001,0x2802400,0x10962460,0x44010001,0x2802400, -0x10c62460,0x44010002,0x2802100,0x10962460,0x44010002,0x2802500,0x20962460,0x44010097,0x2802100,0x80962460,0x440100d2,0x2802100,0x80962460}; +0x5000019,0x7c00100,0x30220400,0x5000019,0x7c00100,0xc8220402,0x5000019,0x7c00100,0xc8250401,0x5000019,0x7c00100,0xc8250402,0x5000019,0x7c00100,0xfc220400,0x5000019, +0x7c00100,0xfc220401,0x5000019,0x7c00100,0xfc250400,0x5000019,0x7c00100,0xfc250401,0x5000019,0x7c00500,0xc822040f,0x500001a,0x6800000,0x21329800,0x500001a,0x6800100, +0x8962541,0x500001a,0x6800100,0xfc962540,0x500001a,0x6800100,0xfc962541,0x500001a,0x7c00100,0x8230400,0x500001a,0x7c00100,0x20230400,0x500001a,0x7c00100,0xfc230400, +0x500001f,0x4000000,0x4200000,0x500001f,0x6800000,0x21329800,0x500001f,0x6800100,0xfc962540,0x500001f,0x6800100,0xfc962541,0x500001f,0x7c00100,0x8230400,0x500001f, +0x7c00100,0x20230400,0x500001f,0x7c00100,0xfc230400,0x5000023,0x6800100,0xfc962540,0x5000023,0x6800100,0xfc962541,0x5000023,0x7c00100,0xfc230400,0x5000023,0x7c00100, +0xfc230401,0x5000024,0x6800000,0x21329800,0x5000024,0x6800100,0x20962540,0x5000024,0x6800100,0xfc962540,0x5000024,0x7c00100,0x8230400,0x5000024,0x7c00100,0x20230400, +0x5000024,0x7c00100,0xfc230400,0x5000026,0x4000000,0x4200000,0x5000026,0x4000010,0x4400000,0x5000026,0x6800000,0xfd329800,0x5000026,0x7800100,0xc9830142,0x5000026, +0x7c00100,0xfd830000,0x5000026,0x7c00900,0xfd830000,0x5000026,0x7e00100,0xfd830000,0x5000067,0x1000,0,0x5000410,0x7c00500,0xf8230400,0x500041b,0x4000400, +0x4200400,0x5000492,0x7c00500,0xc8230401,0x50004a5,0x4000010,0x4b00000,0x50004a5,0x4000010,0x5071400,0x50004b1,0xc000010,0x4b48000,0x50004b9,0x7c00900,0x8230400, +0x50004e9,0xc000010,0x4448000,0x50004fe,0xc000010,0x4448000,0x500053c,0x4000000,0x4200000,0x50005c4,0x4000000,0x4e00000,0x5000621,0x24000000,0x14810000,0x5000621, +0x24000000,0x15410000,0x5000c94,0x4000400,0x14200000,0x5000ca3,0xc000010,0x5049400,0x5000cc7,0x6800000,0xfd329800,0x5000ccb,0xc000010,0x4b48000,0x5000d19,0x6800000, +0xfd329800,0x5000d1e,0x6800000,0xfd329800,0x5000d22,0x6800000,0x21329800,0x5000d26,0x6800000,0xfd329800,0x5000d2c,0x7c00100,0xfc230400,0x5000d30,0x4000000,0x4200000, +0x5000d30,0x6800000,0x21329800,0x5000d35,0x6800000,0xfd329800,0x5000e25,0x7c00100,0xc8230408,0x5001000,0x80004,0xc7018820,0x5001000,0x4000000,0x4100000,0x5001000, +0x4000000,0xc8100002,0x5001000,0x4000000,0xc8100003,0x5001000,0x4000000,0xc8100006,0x5001000,0x4000000,0xc810000e,0x5001000,0x4000000,0xc810000f,0x5001000,0x4000000, +0xc9500002,0x5001000,0x4000000,0xc9600002,0x5001000,0x4000100,0xc8120403,0x5001000,0x4000100,0xc8150403,0x5001000,0x4000400,0x4200400,0x5001000,0x4000400,0xc8100002, +0x5001000,0x4000400,0xc8100402,0x5001000,0x4000400,0xc8500002,0x5001000,0x7c00120,0xc8120405,0x5001000,0x7c00d00,0x10130400,0x5001000,0x24000000,0x4100000,0x5001000, +0x24000000,0x4200000,0x5001000,0x24000000,0x4e00000,0x5001000,0x24000000,0x5400000,0x5001000,0x24000000,0x5500000,0x5001000,0x24000000,0x5600000,0x5001000,0x24000000, +0xc8200002,0x5001000,0x24000000,0xc8f00002,0x5001000,0x24000000,0xf8401000,0x5001000,0x24000002,0x4100000,0x5001000,0x24000002,0x4370000,0x5001000,0x24000002,0x4470000, +0x5001000,0x24000006,0xfb000000,0x5001000,0x24000008,0x5710000,0x5001000,0x24000008,0x5712c00,0x5001000,0x24000008,0xf9712c00,0x5001000,0x24000020,0x4100000,0x5001000, +0x24000020,0x4100001,0x5001000,0x24000020,0x5500000,0x5001000,0x24000020,0x5600000,0x5001000,0x24000020,0xc8100002,0x5001000,0x24000020,0xc9500002,0x5001000,0x2c000010, +0xc8f0ac02,0x5001008,0x7c00100,0xfc220400,0x5001008,0x7c00100,0xfc220401,0x5001008,0x7c00100,0xfc250400,0x5001008,0x7c00100,0xfc250401,0x500100e,0x7c00100,0xc8250401, +0x500100e,0x7c00100,0xfc220400,0x500100e,0x7c00100,0xfc250400,0x5001019,0x7c00100,0x8220400,0x5001019,0x7c00100,0x10220400,0x5001019,0x7c00100,0x20220401,0x5001019, +0x7c00100,0xc8120402,0x5001019,0x7c00100,0xc812040f,0x5001019,0x7c00100,0xc8150401,0x5001019,0x7c00100,0xc8150402,0x5001019,0x7c00100,0xc8220402,0x5001019,0x7c00100, +0xc8250402,0x5001019,0x7c00100,0xfc220400,0x5001019,0x7c00100,0xfc220401,0x5001019,0x7c00100,0xfc250400,0x5001019,0x7d00100,0xc0220402,0x5001067,0,0, +0x5001400,0x6800c00,0xf9001000,0x5001417,0x4000400,0xc8100002,0x5001417,0x7c00500,0x10130400,0x5001419,0x7c00500,0x10130400,0x5002000,0x4000000,0x5600000,0x5002000, +0x4000000,0xc820000a,0x5002000,0x4000020,0xc820000a,0x5002012,0x7c00100,0xc8e3040a,0x5002012,0x7c80100,0xc4e3040a,0x5002016,0x7c00100,0xc8e30c0a,0x5002016,0x7c00100, +0xca530c0a,0x50025aa,0x4000008,0xc881000a,0x50025aa,0x4000008,0xc941000a,0x50025aa,0x4000010,0xc887000a,0x50025aa,0x6800004,0xc920000a,0x50025aa,0xc000010,0xc884800a, +0x50025c2,0x7c00d00,0xca530c0a,0x5003000,0x4000000,0xc8810011,0x5003000,0x4000000,0xc8e00011,0x5003000,0x4000000,0xc9410011,0x5003000,0x4000000,0xc9500011,0x5003000, +0x4000000,0xc9600011,0x5003000,0x4000001,0xc8445811,0x5003000,0x4000006,0xc8e70011,0x5003000,0x4000008,0xc8e00011,0x5003000,0x4000008,0xc8e02c11,0x5003000,0x4000010, +0xc8871411,0x5003000,0x4000010,0xc9271011,0x5003000,0x4000010,0xc9271411,0x5003000,0x4000020,0xc8e00011,0x5003000,0x4000400,0xc8e00011,0x5003000,0x4000420,0xc8e00011, +0x5003000,0x6800000,0xc8e01c11,0x5003000,0x6800040,0xc8e29811,0x5003000,0xc000010,0xc880ac11,0x5003000,0xc000010,0xc8b48011,0x5003019,0x7c00100,0xc8e20411,0x5003019, +0x7c00100,0xc8e50411,0x5003019,0x7c00140,0xc8e20411,0x5003019,0x7c00140,0xc8e50411,0x5004000,0x4000400,0xc8200002,0x5004000,0x6800000,0xfc201c00,0x5004000,0x68000c0, +0xfd329800,0x5004000,0x24000000,0x4200000,0x5004000,0x24000000,0x4810000,0x5004000,0x24000000,0x5410000,0x5004000,0x24000000,0x5500000,0x5004000,0x24000000,0x5600000, +0x5004000,0x24000000,0x5b00000,0x5004000,0x24000000,0x6410000,0x5004000,0x24000006,0xf8d70000,0x5004000,0x24000008,0x5714000,0x5004000,0x24000008,0xf9713c00,0x5004000, +0x24000010,0x5071400,0x5004000,0x24000010,0xf9071000,0x5004000,0x24000020,0x4200000,0x5004000,0x24000020,0x4400000,0x5004000,0x24000020,0x5600000,0x5004000,0x24000400, +0x4200000,0x5004000,0x24000420,0x4200000,0x5004000,0x2c000010,0x4b48000,0x5004000,0x2c000010,0xf900ac00,0x5004000,0x44000001,0x5a45800,0x5004019,0x7c00100,0xfc220400, +0x5004019,0x7c00100,0xfc250400,0x5004019,0x7c001c0,0xfc220400,0x5004019,0x7c001c0,0xfc250400,0x5005000,0x4000000,0x4e00000,0x5005000,0x4000000,0x14e00000,0x5005000, +0x4000000,0xc881000c,0x5005000,0x4000000,0xc8810010,0x5005000,0x4000000,0xc8e00002,0x5005000,0x4000000,0xc8e0000c,0x5005000,0x4000000,0xc8e0000d,0x5005000,0x4000000, +0xc8e00010,0x5005000,0x4000000,0xc941000c,0x5005000,0x4000000,0xc9410010,0x5005000,0x4000000,0xc950000c,0x5005000,0x4000000,0xc960000c,0x5005000,0x4000002,0xc8e7000c, +0x5005000,0x4000002,0xc8e70010,0x5005000,0x4000008,0xc8810010,0x5005000,0x4000008,0xc9410010,0x5005000,0x4000010,0xc887000c,0x5005000,0x4000010,0xc887140c,0x5005000, +0x4000010,0xc927100c,0x5005000,0x4000010,0xc927140c,0x5005000,0x4000020,0xc8e0000c,0x5005000,0x4000026,0xc8e7000c,0x5005000,0x6800000,0xc8e01c02,0x5005000,0x6800000, +0xc8e01c10,0x5005000,0xc000010,0xc880ac0c,0x5005000,0xc000010,0xc8b4800c,0x5005000,0x24000000,0x4200000,0x5005000,0x24000000,0x4e00000,0x5005000,0x24100000,0xc0810001, +0x5005000,0x24100000,0xc1410001,0x5005005,0x7c00100,0x40e30400,0x5005011,0x7c00300,0x10e30000,0x5005011,0x7c00300,0xc8e30001,0x5005011,0x7c00300,0xfce30000,0x5005011, +0x7c00900,0xfd230400,0x5005011,0x7c40300,0x20e30000,0x5005011,0x7c40300,0xfce30000,0x5005012,0x4000000,0xc8e00002,0x5005012,0x4000000,0xc8e00003,0x5005012,0x7c00100, +0xa130480,0x5005012,0x7c00100,0xc8e30402,0x5005012,0x7c80100,0xc4e30402,0x5005012,0x7c80100,0xc6130480,0x5005014,0x7c00100,0xfce30000,0x5005014,0x7c00100,0xfce30001, +0x5005014,0x7c00100,0xfe530000,0x5005014,0x7c00900,0xfd230000,0x5005014,0x7c00900,0xfd230001,0x5005016,0x4000000,0xc8e00c03,0x5005016,0x4000000,0xc8e00c0d,0x5005016, +0x7c00100,0xfce30c00,0x5005016,0x7c00100,0xfce30c01,0x5005016,0x7c00100,0xfe530c00,0x5005016,0x7c00900,0xfd230c00,0x5005016,0x7c00900,0xfd230c01,0x50055aa,0x6800004, +0xf9200000,0x50055aa,0x24000000,0x4810000,0x50055aa,0x24000000,0x5410000,0x50055aa,0x24000008,0x4810000,0x50055aa,0x24000008,0x5410000,0x50055b0,0x24000010,0x4870000, +0x50055b7,0x2c000010,0x4848000,0x50055bf,0x4000000,0x4e00000,0x50055bf,0x24000000,0x4e00000,0x50055bf,0x24000002,0x4e00000,0x50055bf,0x24000002,0x5200000,0x50055bf, +0x24000008,0x4810000,0x50055bf,0x24000008,0x5410000,0x50055bf,0x24000008,0xc810000,0x50055c2,0x7000400,0xc9200c02,0x50055c2,0x7c00900,0x10930c00,0x50055c2,0x7c00900, +0x10e30c00,0x50055c2,0x7c00d00,0xfe530c00,0x50055c4,0x4000000,0x4e00000,0x50055c4,0x4000000,0xc8e00002,0x50055c4,0x4000000,0xc8e00003,0x50055c4,0x4000000,0xc8e0000d, +0x50055c4,0x4000000,0xc8e0000f,0x50055c4,0x7c00300,0xfce30000,0x50055c5,0x24000000,0x4810000,0x50055c5,0x24000000,0x5410000,0x50055cd,0x24000000,0x4810000,0x50055cd, +0x24000000,0x5410000,0x5008004,0x7c00100,0xc8230401,0x5008004,0x7c00100,0xfc230400,0x500800a,0x7c00100,0x20230401,0x500800a,0x7c00100,0xc8230401,0x500800a,0x7c00100, +0xfc230400,0x500800a,0x7c00100,0xfc230401,0x500800f,0x7c00100,0xfc230400,0x500801a,0x7c00100,0xfc230400,0x500801f,0x7c00100,0xc8230401,0x500801f,0x7c00100,0xfc230400, +0x5008024,0x7c00100,0x20230400,0x5008024,0x7c00100,0xfc230400,0x5010001,0x2000,0x14962460,0x5010001,0x2802020,0x10962460,0x5010001,0x2802400,0x10962460,0x5010001, +0x2802400,0x10c62460,0x5010001,0x2880000,0xc6a65620,0x5010002,0x2802100,0x10962460,0x5010002,0x2802400,0x10962460,0x5010002,0x2802500,0x10962460,0x5010004,0x2802100, +0x8962460,0x5010004,0x2802100,0x20962460,0x5010004,0x2802100,0xfc962460,0x5010004,0x2802400,0xfc962460,0x501000a,0x2802100,0x8962460,0x501000a,0x2802100,0x20962460, +0x501000a,0x2802100,0xfc962460,0x501000a,0x2802400,0xfc962460,0x501000f,0x2802100,0x20962460,0x501000f,0x2802100,0xfc962460,0x501000f,0x2802400,0xfc962460,0x5010010, +0x2802100,0xfc962460,0x5010010,0x2802400,0xfc962460,0x5010010,0x2802900,0xfc962460,0x5010010,0x2806400,0xfc962460,0x5010013,0x2802500,0x20962460,0x5010013,0x2802500, +0x30962460,0x5010015,0x2802100,0x20962460,0x5010015,0x2802100,0xfc962460,0x5010015,0x2802100,0xfc962461,0x5010015,0x2806400,0xfc962460,0x5010018,0x2802100,0xfd862460, +0x5010018,0x2802400,0xfd862460,0x501001a,0x2802100,0xfc962460,0x501001f,0x2802100,0x20962460,0x501001f,0x2802100,0xfc962460,0x501001f,0x2802400,0xfc962460,0x5010023, +0x2802100,0x10962460,0x5010023,0x2802100,0x20962460,0x5010023,0x2802100,0xfc962460,0x5010023,0x2806400,0xfc962460,0x5010024,0x2802100,0x20962460,0x5010024,0x2802100, +0xfc962460,0x5010024,0x2802100,0xfc962461,0x5010026,0x2802100,0xfd862460,0x5010026,0x2802400,0x21862460,0x5010026,0x2802400,0xfd862460,0x5010026,0x2806500,0xfd862460, +0x501089e,0x2802400,0x18962460,0x50108c2,0x2802100,0xfc962460,0x50108c2,0x2802500,0xfc962460,0x50108cd,0x2802400,0x8962460,0x50108dc,0x2802400,0x8962460,0x5010c98, +0x2802400,0x8962460,0x5010c9c,0x2802400,0x18962460,0x5011001,0x2802400,0x10962460,0x5011001,0x2802400,0x10c62460,0x5011001,0x2802400,0x20962460,0x5011001,0x2802400, +0xc8962461,0x5011001,0x2802400,0xfc962460,0x501181d,0x2802400,0xfc962460,0x5011825,0x2802400,0xfc962460,0x501182d,0x2802400,0xfc962460,0x501182f,0x2802400,0xfc962460, +0x5011831,0x2802400,0xfc962460,0x5011836,0x2802400,0xfc962460,0x5011841,0x2802400,0x20962460,0x5011847,0x2802400,0xfc962460,0x501184c,0x2802400,0xfc962460,0x5011855, +0x2802400,0xfc962460,0x5011860,0x2802400,0xfc962460,0x5011863,0x2802400,0xfc962460,0x5011867,0x2802400,0xfc962460,0x501186a,0x2802400,0x10962460,0x501186a,0x2802400, +0x20962460,0x501186c,0x2802400,0x10962460,0x501186e,0x2802400,0x10962460,0x5011871,0x2802400,0x10962460,0x5011875,0x2802400,0xfc962460,0x501187b,0x2802400,0x10962460, +0x501187f,0x2802400,0x10962460,0x5011881,0x2802400,0x10962460,0x5011884,0x2802400,0x10962460,0x5011887,0x2802400,0xfc962460,0x501188e,0x2802400,0x10962460,0x501188e, +0x2802500,0x8962460,0x50125c2,0x3802500,0xc926246a,0x5015012,0x2802400,0x18962460,0x50159c2,0x2802400,0x20962460,0x50159d6,0x2802400,0x10962460,0x5018004,0x2806400, +0xfc962460,0x501800a,0x2806400,0xfc962460,0x501800f,0x2806400,0xfc962460,0x501801a,0x2806400,0xfc962460,0x501801f,0x2806400,0xfc962460,0x5018024,0x2806400,0xfc962460, +0x8000000,0x4000000,0x5600000,0x8000019,0x7c00100,0xc8220401,0x8000027,0x4000000,0x4200000,0x8000027,0x4000000,0x4400000,0x8000027,0x4000000,0x4500000,0x8000027, +0x4000000,0x4810000,0x8000027,0x4000000,0x4b00000,0x8000027,0x4000000,0x5410000,0x8000027,0x4000000,0xc8c0000b,0x8000027,0x4000000,0xf8400000,0x8000027,0x4000010, +0x4b00000,0x8000027,0x4000010,0x4c00000,0x8000027,0x6800000,0xfd329800,0x8000027,0x6800100,0xfc462540,0x8000027,0x6800400,0x10962540,0x8000027,0x7c00100,0x8230400, +0x8000027,0x7c00100,0x10230400,0x8000027,0x7c00100,0xc8230401,0x8000027,0x7c00100,0xfc230400,0x8000067,0,0x1900000,0x8000067,0x1000,0,0x8001067, +0,0,0x8005012,0x7c00100,0xfdf304c1,0x8005012,0x7c00100,0xfe0304e1,0x8010013,0x2802400,0x10962460,0x8010013,0x2802500,0x10962460,0x8010027,0x2802100, +0xc8962461,0x8010027,0x2802100,0xfc962460,0x8010027,0x2802400,0x8962460,0x8010027,0x2802400,0x10962460,0x8010027,0x2802400,0x20962460,0x8010027,0x2802500,0x28962460, +0x8010027,0x2806400,0xfc962460,0x8010027,0x2902100,0xc0962462,0x9000000,0x4000000,0x4700000,0x9001000,0x4000000,0x5600000,0xc000000,0,0x4918820,0xc000000, +0x4000000,0x4200000,0xc000000,0x4000000,0x5600000,0xc000000,0x4000400,0x4200400,0xc000000,0x7c00100,0xc8220405,0xc000000,0x7c00500,0x10230400,0xc000000,0x24000000, +0x4200000,0xc000000,0x2c000010,0xc9248002,0xc000002,0x4000000,0xf8200000,0xc000002,0x7c00100,0x20230400,0xc000002,0x7c00100,0xfc230400,0xc000003,0x4000006,0xfb000400, +0xc000005,0x4000400,0x44200400,0xc000006,0x7c00100,0x40250400,0xc000008,0x7c00100,0x20220400,0xc000008,0x7c00100,0x20220401,0xc000008,0x7c00100,0x20250400,0xc000008, +0x7c00100,0x20250401,0xc00000b,0x4000000,0x4200000,0xc00000b,0x4000010,0x4200000,0xc00000b,0x4000010,0x4400000,0xc00000b,0x6800000,0x8200000,0xc00000b,0x7c00100, +0x20230400,0xc00000b,0x7c00100,0xfc230400,0xc00000b,0xc000010,0x4248000,0xc00000e,0x7c00100,0x8220400,0xc00000e,0x7c00100,0x10220400,0xc000013,0x7c00100,0xca633801, +0xc000017,0x4000000,0x4200000,0xc000017,0x4000000,0x5600000,0xc000017,0x4000000,0xc400000,0xc000017,0x4000010,0x4400000,0xc000017,0x4000010,0x5200000,0xc000017, +0x6800000,0xfd329800,0xc000017,0x6800100,0xfd862540,0xc000017,0x7c00100,0x9830000,0xc000017,0x7c00100,0x21830000,0xc000017,0xc000010,0x4448000,0xc000019,0x7c00100, +0x8220400,0xc000019,0x7c00100,0x8250400,0xc000019,0x7c00100,0x10220400,0xc000019,0x7c00100,0x18250400,0xc000019,0x7c00100,0x20220400,0xc000019,0x7c00100,0x20220401, +0xc000019,0x7c00100,0x20250400,0xc000019,0x7c00100,0x20250401,0xc000019,0x7c00100,0xfc220401,0xc000019,0x7c00100,0xfc250401,0xc00001b,0x80000,0xc4c18820,0xc00001b, +0x4000000,0x84200000,0xc00001b,0x4000006,0x84500000,0xc00001b,0x4000010,0x84400000,0xc00001b,0x4000010,0x84b70000,0xc00001b,0x4000800,0x84200000,0xc00001b,0x6800000, +0x81329800,0xc00001b,0x7c00100,0x80230400,0xc00001b,0x7c00900,0x80230400,0xc00001b,0xc000010,0x84b48000,0xc00001c,0x4000000,0x4200000,0xc00001c,0x6800100,0x29862540, +0xc00001c,0x6800100,0xfd862400,0xc00001c,0x6800100,0xfd862540,0xc00001c,0xc000010,0x4448000,0xc00001d,0x4000000,0x84810000,0xc00001d,0x4000000,0x85410000,0xc00001d, +0x4000001,0x84445800,0xc00001d,0x7c00100,0x80230400,0xc000020,0x7c00100,0x80230400,0xc000021,0x4000000,0x4200000,0xc000021,0x6800100,0x30962540,0xc000021,0x6800100, +0xfc962540,0xc000021,0x6800100,0xfc962541,0xc000021,0x7c00100,0x8230400,0xc000021,0x7c00100,0x20230400,0xc000021,0x7c00100,0x30230400,0xc000021,0x7c00100,0xfc230400, +0xc000022,0x4000000,0x44200000,0xc000022,0x4000010,0x44200000,0xc000022,0x7c00100,0x40230400,0xc000022,0xc000010,0x44248000,0xc000022,0x80000000,0x44218560,0xc000025, +0x7c00100,0xfc230400,0xc000027,0x4000000,0x4200000,0xc000027,0x4000000,0x4400000,0xc000027,0x7c00100,0x28230400,0xc000028,0x4000000,0x44200000,0xc000028,0x7c00100, +0x40230400,0xc000028,0xc000010,0x44248000,0xc00002e,0x24000000,0x14200000,0xc00002e,0x24000000,0x14400000,0xc00053f,0x4000010,0x84400000,0xc000544,0x4000010,0x84400000, +0xc000544,0x4000010,0x84b70000,0xc000544,0xc000010,0x84b48000,0xc000588,0x4000001,0xc8c41c0b,0xc000d3a,0x6800000,0xfd329800,0xc001000,0x4000400,0x4500400,0xc005005, +0x7c00100,0x40e30400,0xc005011,0x4020000,0x4e00000,0xc005011,0x4020000,0xc8e00002,0xc005011,0x7c00300,0xc8e30002,0xc005011,0x7c40300,0x20e30000,0xc005011,0x7c40300, +0xfce30000,0xc005029,0x4000000,0x44e00000,0xc005029,0x7c00100,0x40e30400,0xc005029,0x7c00900,0x41230400,0xc0055a8,0x4008000,0x4e00000,0xc0055a8,0x4010000,0x4e00000, +0xc0055c4,0x4000000,0x4e00000,0xc008017,0x7c00100,0x9830000,0xc008017,0x7c00100,0x21830000,0xc008017,0x7c00100,0xfd830000,0xc008017,0x7d00100,0xc1830000,0xc00801c, +0x7c00100,0x29830000,0xc00801c,0x7c00100,0xfd830000,0xc00801c,0x7c00100,0xfd830001,0xc010001,0x2000,0x14962460,0xc010008,0x2000,0xc962460,0xc010017,0x2802100, +0xfd862460,0xc010017,0x2802400,0x9862460,0xc010017,0x2802400,0x11862460,0xc010017,0x2802400,0x19862460,0xc010017,0x2802400,0xfd862460,0xc010017,0x2882000,0xc5862460, +0xc01001b,0x2802100,0xa0962460,0xc01001b,0x3c02100,0x80962460,0xc01001b,0x12882000,0xc4962460,0xc01001c,0x2802100,0x29862460,0xc01001c,0x2802100,0xfd862460,0xc01001c, +0x2802400,0xfd862460,0xc010021,0x2802100,0x30962460,0xc010021,0x2802100,0xfc962460,0xc010021,0x2806400,0xfc962460,0xc010022,0x2802100,0x40962460,0xc010022,0x2802400, +0x50962460,0xc010022,0x2802500,0x40962460,0xc010025,0x2802500,0xfc962460,0xc010027,0x2802100,0x20962460,0xc010027,0x2802100,0xfc962460,0xc010027,0x2802400,0x30962460, +0xc0108c2,0x2802100,0x30962460,0xc0108c2,0x2802100,0xfc962460,0xc011001,0x2802400,0x10962460,0xc011001,0x2802400,0x10c62460,0xc018017,0x2806400,0xfd862460,0xc01801c, +0x2806400,0xfd862460,0xd000000,0x80000,0xc4918820,0xd000000,0x180000,0xc0918820,0xd000000,0x4000000,0x14200000,0xd000000,0x4000000,0xc8200001,0xd000000,0x4000020, +0xc8200005,0xd000000,0x6800020,0xc9329805,0xd000000,0x7c00120,0xc8220405,0xd000000,0x7c00120,0xc8250405,0xd000009,0x7c00100,0x80220400,0xd000009,0x7c00100,0x80250400, +0xd00000d,0x7c00100,0x80230400,0xd00000e,0x7c00120,0xc8220402,0xd00000e,0x7c00120,0xc8250402,0xd00001e,0x4000000,0x84200000,0xd00001e,0x7c00100,0x80230400,0xd000067, +0x1000,0,0xd005011,0x7c00300,0xc8e30001,0xd005011,0x7c40300,0x20e30000,0xd005011,0x7c40300,0xfce30000,0xd010000,0x82000,0xc4962460,0xd010000,0x2802000, +0x10962460,0xd010000,0x2802400,0x10962460,0xd010001,0x2802400,0x10962460,0xe000000,0x80000,0xc5e18820,0xe000000,0x80020,0xc4218820,0xe000000,0x4000000,0x4200000, +0xe000000,0x4000000,0x5600000,0xe000000,0x4000001,0xc8445802,0xe000000,0x4000020,0x4200000,0xe000000,0x4000020,0xc8200005,0xe000000,0x7c00120,0xc8220405,0xe000000, +0x7c00120,0xc8250405,0xe000000,0x24000000,0x4100000,0xe000000,0x24000000,0x4200000,0xe000000,0x24000000,0x4810000,0xe000000,0x24000000,0x5410000,0xe000000,0x24000000, +0xc9500002,0xe000000,0x24000020,0x4200000,0xe000000,0x24000020,0x4810000,0xe000000,0x24000020,0x5410000,0xe000000,0x24000020,0xc8200001,0xe000000,0x24000020,0xc8200002, +0xe000000,0x2c000010,0xc9248002,0xe000002,0x4000000,0xc9500008,0xe000002,0x7c00100,0x8230400,0xe000002,0x7c00100,0x10230400,0xe000008,0x7c00100,0x8220400,0xe000008, +0x7c00100,0x8250400,0xe000008,0x7c00100,0x20220400,0xe000008,0x7c00100,0x20250400,0xe00000c,0x7c00100,0x20230400,0xe00000e,0x4000020,0x4200000,0xe00000e,0x7c00100, +0x8220400,0xe00000e,0x7c00100,0x8250400,0xe000019,0x7c00100,0x20250400,0xe000019,0x7c00100,0xc822040f,0xe000025,0x7c00100,0xfc230400,0xe00002a,0x7c00100,0x80230400, +0xe00002b,0x7c00100,0x80230400,0xe00002c,0x7c00100,0x80230400,0xe00002d,0x7c00100,0x80230400,0xe000540,0xc000010,0x84448000,0xe00058b,0x24000000,0x4200000,0xe001000, +0x4000000,0x14100000,0xe003000,0x4000000,0xc8810011,0xe003000,0x4000000,0xc9410011,0xe004000,0x24000020,0x4810000,0xe004000,0x24000020,0x5410000,0xe005000,0x4000000, +0xc8e00003,0xe005000,0x24000020,0x4200000,0xe005011,0x7c00100,0x11230400,0xe005011,0x7c00300,0xc8e30001,0xe005014,0x7c00100,0xc8e30010,0xe005014,0x7c00100,0xfe530000, +0xe005016,0x7c00100,0xa530c00,0xe005016,0x7c00100,0xc8e30c10,0xe005029,0x4000000,0x44e00000,0xe0055bf,0x24000000,0x14e00000,0xe0055c2,0x4000002,0xf9200c00,0xe0055d8, +0x4000000,0x4e00000,0xe0055d8,0x7c00100,0x11230400,0xe010001,0x2000,0x14962460,0xe010001,0x2802000,0x10962460,0xe010001,0x2802020,0x10962460,0xe01002a,0x2802100, +0x80962460,0xe01002a,0x2806400,0x80962460,0xe01002b,0x2802100,0x80962460,0xe01002b,0x2806400,0x80962460,0xe01002c,0x2802100,0x80962460,0xe01002d,0x2802100,0x80962460, +0xe011001,0x2882000,0xc4962460,0xe011001,0x12882000,0xc4962460,0xe011818,0x2802100,0x8962460,0x10000000,0x4000000,0xc8200002,0x10000000,0x4000400,0x4200400,0x10000000, +0x6800000,0x20201c00,0x10000000,0x7c00120,0xc8220405,0x10000000,0x24000000,0x4200000,0x10000000,0x24000002,0x4200000,0x10000000,0x24000020,0x4200000,0x10000002,0x4000000, +0x4200000,0x10000002,0x4000000,0x5071400,0x10000002,0x7c00100,0xfc230400,0x10000002,0x80000000,0x5329960,0x10000004,0x7c00100,0x8230400,0x10000008,0x7c00100,0x10220400, +0x10000009,0x7c00100,0x80220400,0x10000009,0x7c00100,0x80250400,0x1000000a,0x7c00100,0x20230400,0x1000000e,0x7c00100,0x8220400,0x1000000e,0x7c00100,0x8250400,0x1000000e, +0x7c00100,0x10220400,0x1000000e,0x7c00100,0xc8250402,0x1000000e,0x7c00500,0xc822040e,0x1000000e,0x7c00500,0xc822040f,0x1000000f,0x4000000,0x5600000,0x1000000f,0x7c00100, +0x8230400,0x1000000f,0x7c00100,0xfc230400,0x10000010,0x6800100,0x20962540,0x10000015,0x7c00100,0x8230400,0x10000017,0x4000000,0x4200000,0x10000019,0x7c00100,0x10220400, +0x10000019,0x7c00100,0x20220400,0x10000019,0x7c00500,0x10220400,0x10000019,0x7c00500,0xc822040e,0x10000019,0x7c00500,0xc822040f,0x10000022,0x7c00100,0x40230400,0x10000023, +0x4000000,0x4200000,0x10000023,0x4000000,0x5600000,0x1000002f,0x7c00100,0x80230400,0x10000030,0x4000000,0x44200000,0x10000030,0x6800000,0x41329800,0x10000030,0x6800100, +0x40962540,0x10000030,0x7c00100,0x40230400,0x10000030,0xc000010,0x44b48000,0x10000031,0x7c00100,0x80230400,0x10000032,0x6800000,0x81329800,0x10000032,0x7c00100,0x80230400, +0x10000033,0x7c00100,0x80230400,0x10000034,0x7c00100,0x41830000,0x10000035,0x4000010,0x84400000,0x10000035,0x7c00100,0x80230400,0x10000627,0x4000000,0x84200000,0x1000062a, +0x4000000,0x84400000,0x1000062d,0x4000000,0x84200000,0x1000062d,0x4000000,0x84400000,0x10000d30,0x4000000,0x4200000,0x10000e25,0x4000000,0x14200000,0x10001000,0x4000000, +0x14200000,0x10005000,0x4000000,0x14200000,0x10005000,0x4000000,0xc8810010,0x10005000,0x4000000,0xc8e0000d,0x10005000,0x4000000,0xc9410010,0x10005000,0x24000000,0x4200000, +0x10005000,0x24000000,0x4e00000,0x10005012,0x4000000,0xc8e00002,0x10005012,0x4000000,0xc8e00003,0x1000801f,0x7c00100,0x20230400,0x1000801f,0x7c00100,0xfc230400,0x10010002, +0x2802100,0x10962460,0x10010002,0x2802100,0x20962460,0x10010002,0x2802400,0x20962460,0x10010002,0x2802500,0x20962460,0x1001000f,0x2802100,0x8962460,0x10010010,0x2802100, +0x20962460,0x10010015,0x2802400,0x20962460,0x10010017,0x2802400,0x19862460,0x10010030,0x2802100,0x40962460,0x10010030,0x2802400,0x40962460,0x10011001,0x2802400,0x10962460, +0x10011001,0x2802400,0x10c62460,0x10011001,0x12882000,0xc4962460,0x1001188f,0x2802400,0x10c62460,0x11000000,0x4000000,0x4200000,0x11000000,0x4000000,0x5600000,0x11000000, +0x4000400,0x14200400,0x11000000,0x7c00120,0xc8220405,0x11000000,0x24000000,0x4200000,0x11000000,0x24000000,0x4e00000,0x11000000,0x24000000,0x5710000,0x11000000,0x24000000, +0xc200000,0x11000000,0x24000000,0xc400000,0x11000000,0x24000000,0x1d710000,0x11000000,0x24000020,0x4200000,0x11000000,0x24000020,0x4810000,0x11000000,0x24000020,0x5410000, +0x11000002,0x4000000,0x5500000,0x11000002,0x7c00100,0x20230400,0x11000002,0x7c00100,0xfc230400,0x11000002,0xc000010,0x4b48000,0x11000004,0x7c00100,0xfc230400,0x11000007, +0x4000000,0x84200000,0x11000007,0x4000000,0x84400000,0x11000007,0x4000000,0x84b00000,0x11000007,0x7c00100,0x80220400,0x11000007,0x7c00100,0x80250400,0x11000007,0xc000010, +0x84448000,0x11000007,0xc000010,0x84b48000,0x11000008,0x7c00100,0x20220400,0x11000008,0x7c00100,0x20250400,0x11000008,0x7c00100,0xc822040f,0x1100000b,0x4000000,0x4200000, +0x1100000b,0x7c00100,0x20230400,0x1100000b,0x7c00100,0xfc230400,0x1100000c,0x7c00100,0x8220400,0x1100000c,0x7c00100,0x30230400,0x1100000c,0x7c00100,0xc822040f,0x1100000e, +0x4000000,0x4200000,0x1100000e,0x4000000,0xc200000,0x1100000e,0x7c00100,0x8230400,0x1100000e,0x7c00100,0x8250400,0x1100000e,0x7c00100,0x18220400,0x1100000e,0x7c00100, +0xc822040f,0x11000013,0x4000000,0xcb00000,0x11000019,0x7c00100,0x10220400,0x11000019,0x7c00100,0x20220400,0x11000019,0x7c00100,0x20250400,0x11000019,0x7c00100,0xc822040e, +0x11000019,0x7c00500,0xc822040f,0x11000023,0x7c00100,0xfc230400,0x11000027,0x4000000,0x4500000,0x11000037,0x4000000,0x84200000,0x11000037,0x6800100,0x80962540,0x11000037, +0x7c00100,0x80230400,0x11000038,0x7c00100,0x80220400,0x11000038,0x7c00100,0x80250400,0x11000039,0x4000000,0x84200000,0x11000039,0x4000000,0x84400000,0x11000039,0xc000010, +0x84448000,0x1100003a,0x4000000,0x44200000,0x1100003a,0x6800100,0x40962540,0x1100003a,0x7c00100,0x40230400,0x1100003b,0x4000000,0x45800000,0x1100003b,0x6800000,0x41329800, +0x1100003b,0x7c00100,0x41830000,0x1100003b,0x7e00100,0x41830000,0x1100003c,0x7c00100,0x40230400,0x1100003c,0x7c00100,0xc823040f,0x1100003d,0x4000010,0x84400000,0x1100003d, +0x7c00100,0x80230400,0x1100058d,0x24000000,0xc400000,0x11000593,0x24000000,0xc400000,0x1100059a,0x24000006,0x7000000,0x110005db,0x4000400,0xc200000,0x11000d30,0x6800000, +0x21329800,0x11005000,0x4000000,0xc8810010,0x11005000,0x4000000,0xc8870010,0x11005000,0x4000000,0xc8f00010,0x11005000,0x4000000,0xc9270010,0x11005000,0x4000000,0xc9271010, +0x11005000,0x4000000,0xc9410010,0x11005000,0xc000010,0xc8848010,0x11005000,0xc000010,0xc8b48010,0x11005000,0x24000000,0x4200000,0x11005000,0x24000000,0x4e00000,0x11005011, +0x7c00300,0xc8e30001,0x11005011,0x7c40300,0x20e30000,0x11005012,0x4000000,0xc8e00003,0x110055c4,0x4000000,0x4e00000,0x1100800a,0x7c00100,0x10230400,0x11008039,0x7c00100, +0x80230400,0x11010001,0x2802000,0x18962460,0x11010001,0x2802020,0x10962460,0x11010002,0x2802100,0x20962460,0x11010002,0x2802100,0x30962460,0x1101000b,0x2802400,0x20962460, +0x1101000e,0x2802000,0x18962460,0x11010013,0x2802400,0x10962460,0x11010013,0x2802500,0x10962460,0x11010037,0x2802100,0x80962460,0x11010039,0x2802100,0x80962460,0x11010039, +0x2802400,0x80962460,0x1101003a,0x2802100,0x40962460,0x1101003a,0x2806400,0x40962460,0x1101088e,0x2802000,0x18962460,0x11011001,0x2802000,0x10962460,0x11011001,0x2802000, +0x10c62460,0x11011865,0x2802000,0x20962460,0x11018039,0x2806400,0x80962460,0x14000000,0x4000000,0x4200000,0x14000000,0x4000400,0x4200400,0x14000000,0x7c00120,0xc8220405, +0x14000000,0x7c00120,0xc8250405,0x14000000,0x7c00500,0x10230400,0x14000000,0x24000000,0x4200000,0x14000000,0x24000020,0x4200000,0x14000008,0x7c00100,0x20220400,0x14000008, +0x7c00100,0x20250400,0x14000008,0x7c00100,0xfc220400,0x1400000e,0x7c00100,0x8220400,0x14000015,0x7c00100,0x8230400,0x14000019,0x7c00100,0x8220400,0x14000019,0x7c00100, +0x8250400,0x14000019,0x7c00100,0x10220400,0x14000019,0x7c00100,0x10250400,0x14000019,0x7c00100,0x20220400,0x14000019,0x7c00100,0x20250400,0x14000019,0x7c00100,0xfc220400, +0x14000019,0x7c00100,0xfc250400,0x1400003e,0x4000000,0x44400000,0x1400003e,0x4000000,0x44e00000,0x1400003e,0x4000010,0x44400000,0x1400003e,0x6800000,0x42d29800,0x1400003e, +0x6800100,0x40962540,0x1400003e,0x6800100,0x40962541,0x1400003e,0x7c00100,0x42b30400,0x1400003e,0x7c00100,0x42b30401,0x1400003e,0xc000010,0x44448000,0x14000057,0x4000000, +0x44200000,0x14000057,0x4000010,0x45071400,0x14000057,0x6800000,0x41329800,0x14000057,0x7c00100,0x40230400,0x14000057,0x7c00100,0x48230400,0x14000057,0x7c00500,0x40230400, +0x14000057,0x7c00900,0x48230400,0x14000057,0xc000010,0x44b48000,0x1400005a,0x4000000,0x84500000,0x1400005a,0x7c00100,0x80230400,0x1400005a,0xc000010,0x84b48000,0x1400005b, +0x4000000,0x84200000,0x1400005b,0x4000010,0x84400000,0x1400005b,0x7c00100,0x80230400,0x14000065,0x4000010,0x84400000,0x14000065,0x7c00100,0x80230400,0x140055c4,0x4000000, +0x4200000,0x1400800a,0x7c00100,0xfc230400,0x1400803e,0x7c00100,0x42b30400,0x1400803e,0x7c00100,0x42b30401,0x14010001,0x2802020,0x10962460,0x14010001,0x2802400,0x10962460, +0x14010013,0x2802500,0x20962460,0x14010015,0x2802100,0x8962460,0x1401003e,0x2802100,0x40962460,0x1401003e,0x2802100,0x40962461,0x1401003e,0x2802400,0x40962460,0x1401003e, +0x2802400,0x50962460,0x14010057,0x2802400,0x40962460,0x1401803e,0x2806400,0x42f62460,0x15000000,0x80020,0xc4218820,0x15000000,0x4000000,0x4200000,0x15000000,0x4000000, +0x4e00000,0x15000000,0x4000000,0xc200000,0x15000000,0x4000000,0x14200000,0x15000000,0x4000400,0x4200400,0x15000000,0x7c00500,0x10230400,0x15000000,0x24000000,0x4200000, +0x15000000,0x24000000,0x4400000,0x15000000,0x24000000,0x4810000,0x15000000,0x24000000,0x4e00000,0x15000000,0x24000000,0x5400000,0x15000000,0x24000000,0x5410000,0x15000000, +0x24000000,0x5710000,0x15000000,0x24000000,0xc400000,0x15000000,0x24000002,0x4200000,0x15000000,0x24000020,0x4200000,0x15000000,0x24000020,0x4810000,0x15000000,0x24000020, +0x5410000,0x15000000,0x24000500,0xc230400,0x15000000,0x2c000010,0xcb48000,0x15000002,0x4000000,0x5500000,0x15000002,0x4000020,0x4200000,0x15000002,0x7c00100,0x8230400, +0x15000002,0x7c00100,0x20230400,0x15000002,0x7c00100,0xfc230400,0x15000008,0x4000000,0x4200000,0x15000008,0x4000000,0xc200000,0x15000008,0x7c00100,0x8220400,0x15000008, +0x7c00100,0x8230400,0x15000008,0x7c00100,0x8250400,0x15000008,0x7c00500,0x8230400,0x1500000a,0x7c00100,0xfc230400,0x1500000a,0x7c00500,0x8230400,0x1500000e,0x7c00100, +0x8220400,0x1500000e,0x7c00100,0x8250400,0x1500000e,0x7c00100,0x10250400,0x15000019,0x7c00100,0x8220400,0x15000019,0x7c00100,0x8230400,0x15000019,0x7c00100,0x8250400, +0x15000019,0x7c00100,0x10220400,0x15000019,0x7c00100,0x10250400,0x15000019,0x7c00100,0x18220400,0x15000019,0x7c00100,0x18250400,0x15000019,0x7c00100,0x20220400,0x15000019, +0x7c00100,0x20250400,0x15000019,0x7c00100,0xc822040e,0x15000019,0x7c00100,0xc822040f,0x15000019,0x7c00100,0xfc250400,0x1500001a,0x4000000,0x4200000,0x1500001a,0x4000000, +0x5500000,0x1500001a,0x7c00100,0x8230400,0x1500001a,0x7c00100,0xfc230400,0x1500001b,0x7c00100,0x80230400,0x1500001c,0x4000000,0x5800000,0x1500001c,0x6800000,0x21329800, +0x1500001c,0x6800100,0x21862400,0x1500001c,0x6800100,0xfd862400,0x1500001c,0x6800100,0xfd862540,0x1500001c,0x6800500,0x21862400,0x1500001c,0x6800500,0xfd862400,0x15000023, +0x7c00100,0x10230400,0x15000024,0x4000000,0x4200000,0x15000024,0x7c00100,0x8230400,0x15000027,0x4000000,0x4200000,0x15000027,0x4000000,0x4400000,0x15000027,0x4000000, +0x4500000,0x15000027,0x7c00100,0x20230400,0x15000042,0x4000000,0x44e00000,0x15000042,0x6800000,0x42d29800,0x15000042,0x6800100,0x40962540,0x15000042,0x7c00100,0x40430400, +0x15000042,0x7c00100,0x42d30400,0x15000042,0xc000010,0x44448000,0x1500004f,0x6800000,0x41329800,0x1500004f,0x7c00100,0x40230400,0x1500004f,0xc000010,0x44448000,0x15000052, +0x4000010,0x44400000,0x15000052,0x6800000,0x41329800,0x15000052,0x6800100,0x40962540,0x15000052,0x7c00100,0x40230400,0x15000052,0xc000010,0x44448000,0x15000063,0x4000010, +0x44400000,0x15000063,0x6800000,0x41329800,0x15000063,0x7c00100,0x40230400,0x15000063,0x7c00100,0x48230400,0x15000063,0x7c00900,0x40230400,0x15000063,0xc000010,0x44448000, +0x15000063,0xc000010,0x44b48000,0x15000068,0x7c00100,0x80230400,0x1500006b,0x7c00100,0x80230400,0x1500006c,0x4000000,0x84200000,0x1500006c,0x7c00100,0x80230400,0x1500006d, +0x6800000,0x41329800,0x1500006d,0x7c00100,0x40230400,0x1500006d,0x7c00500,0x40230400,0x1500006d,0x7c00d00,0x40230400,0x1500006d,0xc000010,0x44448000,0x1500006e,0x4000000, +0x84200000,0x1500006e,0x6800100,0x80962540,0x1500006e,0x7c00100,0x80230400,0x1500006f,0x6800000,0x41329800,0x1500006f,0x6800100,0x40962540,0x1500006f,0x7c00100,0x40230400, +0x1500006f,0xc000010,0x44448000,0x15000071,0x6800000,0x41329800,0x15000071,0x6800100,0x40962540,0x1500059c,0x24000000,0x84400000,0x1500061c,0x4000400,0x4400000,0x15004000, +0x24000020,0x4810000,0x15004000,0x24000020,0x5410000,0x15005000,0x4000000,0x4e00000,0x15005000,0x24000000,0x4200000,0x15005005,0x7c00100,0x40e30400,0x15005011,0x7c40300, +0x20e30000,0x150055c4,0x4000000,0x4e00000,0x1500801c,0x7c00100,0x21830000,0x1500801c,0x7c00100,0xfd830000,0x15008024,0x7c00100,0x8230400,0x15008071,0x7c00100,0x40230400, +0x15008071,0x7c00100,0x48230400,0x15010001,0x2802000,0x8962460,0x15010001,0x2802000,0x10962460,0x15010001,0x2802000,0x18962460,0x15010001,0x2802100,0x18962460,0x15010001, +0x2802400,0x10962460,0x15010001,0x2802400,0x10c62460,0x15010001,0x2802400,0x18962460,0x15010002,0x2802100,0x8962460,0x15010002,0x2802100,0x10962460,0x15010008,0x2000, +0xc962460,0x15010008,0x2802100,0x8962460,0x15010008,0x2802400,0x20962460,0x15010010,0x2802100,0x20962460,0x1501001a,0x2802100,0x20962460,0x1501001c,0x2802100,0x21862460, +0x1501001c,0x2802100,0xfd862460,0x1501001c,0x2802500,0x21862460,0x1501001c,0x2806400,0xfd862460,0x1501001f,0x2802100,0x20962460,0x15010024,0x2802100,0x20962460,0x15010042, +0x2802100,0x40962460,0x1501004f,0x2802100,0x40962460,0x1501004f,0x2802400,0x40962460,0x15010052,0x2802100,0x40962460,0x15010052,0x2802400,0x40962460,0x15010052,0x2802d00, +0x40962460,0x1501006e,0x2802100,0x80962460,0x1501006e,0x2806400,0x80962460,0x1501006f,0x2806400,0x40962460,0x15010071,0x2802100,0x40962460,0x15010071,0x2806400,0x40962460, +0x15010997,0x2802000,0x10962460,0x15010c9c,0x2802400,0x18962460,0x15010c9c,0x2802400,0x20962460,0x16000000,0x4000000,0x4200000,0x16000000,0x4000000,0x5500000,0x16000000, +0x4000000,0x5600000,0x16000000,0x4000000,0xc8100006,0x16000000,0x4000000,0xc8200003,0x16000000,0x24000000,0x4200000,0x16000002,0x4000000,0x4200000,0x16000004,0x4000000, +0x5600000,0x16000007,0x7c00100,0x80220400,0x16000007,0x7c00100,0x80250400,0x16000008,0x7c00100,0xfc220400,0x16000008,0x7c00100,0xfc250400,0x1600000a,0x4000000,0xc200000, +0x1600000a,0x6800100,0x8962540,0x1600000a,0x7c00100,0x8230400,0x16000012,0x7c00100,0xa230500,0x16000012,0x7c00100,0xa330520,0x16000019,0x7c00100,0x8250400,0x1600001c, +0x4000000,0x5800000,0x1600001c,0x6800100,0x21862400,0x1600001c,0x6800500,0x21862400,0x1600001c,0x6800500,0xfd862400,0x1600001c,0x7c00100,0x21830000,0x1600001c,0x7c00900, +0x21830000,0x16000028,0x4000002,0x47000000,0x16000028,0x7c00100,0x40230400,0x1600003b,0x6800000,0x41329800,0x1600003b,0x7c00100,0x41830000,0x16000047,0x7c00100,0x80230400, +0x16000047,0x7c00100,0x80830400,0x16000047,0x7c00100,0x81430400,0x1600004e,0x4000000,0x44e00000,0x1600004e,0x4000010,0x44400000,0x1600004e,0x6800000,0x42d29800,0x1600004e, +0x6800100,0x40962540,0x1600004e,0x7c00100,0x42b30400,0x1600004e,0xc000010,0x44448000,0x16000058,0x7c00100,0x80230400,0x1600005b,0x4000000,0x84200000,0x1600006a,0x4000000, +0x45800000,0x1600006a,0x6800000,0x41329800,0x1600006a,0x6800100,0x41862400,0x1600006a,0x6800100,0x41862540,0x1600006a,0x7c00900,0x41830000,0x1600006a,0xc000010,0x45848000, +0x16000073,0x6800000,0x41329800,0x16000073,0x6800100,0x40962540,0x16000073,0x6800400,0x40962540,0x16000073,0x7c00100,0x40230400,0x16000073,0xc000010,0x44448000,0x16000074, +0x4000000,0x84200000,0x16000074,0x4000010,0x84400000,0x16000074,0x7c00100,0x80230400,0x16000075,0x4000000,0x84400000,0x16000075,0x4000010,0x84400000,0x16000075,0x7c00100, +0x80230400,0x16000078,0x4000000,0x84200000,0x16000078,0x6800100,0x80962540,0x16000078,0x7c00100,0x80230400,0x16000078,0x7c00100,0x80230401,0x16000078,0xc000010,0x84448000, +0x16000078,0x80000000,0x85329960,0x1600007a,0x4000000,0x84200000,0x1600007a,0x7c00100,0x80230400,0x1600007d,0x4000000,0x84200000,0x1600007d,0x7c00100,0x80230400,0x1600007e, +0x4000000,0x84200000,0x1600007e,0x4000010,0x84200000,0x1600007e,0x7c00100,0x80230400,0x1600007e,0xc000010,0x84248000,0x1600007f,0x4000000,0x45800000,0x1600007f,0x4000010, +0x45800000,0x1600007f,0x7c00100,0x41830000,0x1600007f,0x7c00500,0x41830000,0x1600007f,0x7c00900,0x41830000,0x1600007f,0x7e00100,0x41830000,0x16000082,0x4000000,0x44200000, +0x16000082,0x4000010,0x44400000,0x16000082,0x7c00100,0x40230400,0x16000082,0xc000010,0x44448000,0x16000083,0x4000010,0x44400000,0x16000083,0x7c00100,0x40230400,0x16000083, +0xc000010,0x44448000,0x16000085,0x4000000,0x84200000,0x16000085,0x7c00100,0x80230400,0x16000546,0x7c00100,0x8230400,0x16000548,0x4000400,0xc200000,0x16000562,0x6800400, +0x8962540,0x16000567,0x7c00100,0x8230400,0x1600056a,0x7c00100,0x8230400,0x1600056d,0x7c00100,0x8230400,0x16000573,0x7c00100,0x8230400,0x1600059e,0x24000000,0xc400000, +0x160005dd,0x4000000,0x4200000,0x160005ed,0x4000000,0x4200000,0x160005fc,0x4000000,0x4200000,0x16000607,0x4000000,0x5500000,0x1600061f,0x7c00900,0x60430400,0x16000e1a, +0x7c00100,0x8230400,0x16001000,0x4000000,0x4100000,0x16001000,0x4000000,0xc8100002,0x16001000,0x4000000,0xc8100003,0x16001000,0x4000000,0xc8100006,0x16001000,0x4000000, +0xc810000d,0x16001000,0x4000100,0x4150400,0x16001000,0x4000100,0xc815040d,0x16001000,0x24000000,0x4100000,0x16001000,0x24000000,0x4e00000,0x16001000,0x24000000,0x6800000, +0x16005000,0x4000000,0xc8e00002,0x16005000,0x4000000,0xc8e0000d,0x16005000,0x24000000,0x4100000,0x16005000,0x24000000,0x4e00000,0x16005011,0x7c00300,0xc8e30001,0x16005011, +0x7c40300,0x20e30000,0x16005012,0x7c00100,0xa130480,0x16005014,0x4000000,0xc8e0000d,0x160055c4,0x4000000,0xc8e00003,0x1600800a,0x7c00100,0x20230400,0x1600801c,0x7c00100, +0x21830000,0x1600804e,0x7c00100,0x42b30400,0x1600806a,0x7c00100,0x41830000,0x16008073,0x7c00100,0x40230400,0x16010001,0x2802400,0x10962460,0x16010007,0x2802400,0x80962460, +0x16010007,0x2802400,0x90962460,0x1601000a,0x2802100,0x20962460,0x1601000a,0x2802400,0x8962460,0x1601001c,0x2802100,0x21862460,0x1601004e,0x2802100,0x40962460,0x1601004e, +0x2802400,0x40962460,0x1601006a,0x2802100,0x41862460,0x1601006a,0x2802400,0x40962460,0x1601006a,0x2802400,0x41862460,0x16010073,0x2802100,0x40962460,0x16010073,0x2806400, +0x40962460,0x16010078,0x2802100,0x80962460,0x16010078,0x2802400,0x80962460,0x16010078,0x2806400,0x80962460,0x1601007e,0x2802000,0x80962460,0x1601007e,0x2802100,0x80962460, +0x1601007e,0x2802400,0x80962460,0x1601007f,0x2802100,0x41862460,0x1601007f,0x2802400,0x41862460,0x16010082,0x2802400,0x40962460,0x16010946,0x2802400,0x8962460,0x16010947, +0x2802400,0x8962460,0x1601094b,0x2802400,0x8962460,0x16010950,0x2802400,0x8962460,0x16010953,0x2802400,0x8962460,0x16010956,0x2802400,0x8962460,0x1601095a,0x2802400, +0x8962460,0x1601095c,0x2802400,0x8962460,0x16010964,0x2802400,0x8962460,0x1601096f,0x2802400,0x8962460,0x16010e16,0x2802400,0x8962460,0x1601804e,0x2806400,0x42f62460, +0x1601806a,0x2806400,0x41862460,0x18000000,0x4000000,0x4200000,0x18000000,0x4000000,0x4e00000,0x18000000,0x4000000,0x5600000,0x18000000,0x4000000,0x6703580,0x18000000, +0x24000000,0x4200000,0x18000000,0x24000000,0x4e00000,0x18000000,0x24000000,0x5710000,0x18000000,0x24000020,0x4200000,0x18000002,0x4000000,0x14200000,0x18000002,0x7c00100, +0xfc230400,0x18000008,0x7c00100,0x8220400,0x18000008,0x7c00100,0x8250400,0x1800000a,0x6800100,0xfc962540,0x1800000a,0x7c00100,0xfc230400,0x1800000b,0x7c00100,0x20230400, +0x18000019,0x7c00100,0x8220400,0x18000019,0x7c00100,0x8250400,0x18000019,0x7c00100,0x10220400,0x18000019,0x7c00100,0xc822040e,0x18000019,0x7c00100,0xfc250400,0x1800001a, +0x7c00100,0x8230560,0x1800001f,0x4000000,0x4200000,0x18000027,0x4000000,0x4c00000,0x18000027,0x7c00100,0x8230400,0x1800003c,0x4000000,0x44400000,0x1800003f,0x4000000, +0x44200000,0x1800003f,0x6800100,0x40962540,0x1800003f,0x7c00100,0x42d30400,0x18000041,0x4000000,0x84e00000,0x18000041,0x4000010,0x84e00000,0x18000041,0x6800000,0x82d29800, +0x18000041,0x6800100,0x80962540,0x18000041,0x7c00100,0x82b30400,0x18000041,0x7c00100,0x82c30400,0x18000041,0xc000010,0x84448000,0x18000054,0x4000010,0x44200000,0x18000054, +0x7c00100,0x40230400,0x18000082,0x7c00100,0x40230400,0x18001000,0x4000000,0x4100000,0x18001000,0x4000000,0xc810000d,0x18001000,0x4000100,0x4150400,0x18001000,0x4000100, +0xc815040d,0x18005000,0x4000000,0x4100000,0x18005000,0x4000000,0x4200000,0x18005000,0x4000000,0x4e00000,0x18005000,0x4000000,0x6800000,0x18005000,0x4000000,0xc8e0000d, +0x18005000,0x24000000,0x4200000,0x18005000,0x24000000,0x4e00000,0x18005000,0x24000000,0x6800000,0x18005005,0x7c00100,0x40e30400,0x18005011,0x7c40300,0x20e30000,0x18005014, +0x7c00100,0x8e30000,0x18005016,0x7c00100,0x8e30c00,0x180055c4,0x4000000,0xc8e00003,0x1800801a,0x7c00100,0x8230400,0x1800801a,0x7c00100,0x20230400,0x18010001,0x2802400, +0x10c62460,0x18010002,0x2802100,0x20962460,0x1801000a,0x2802100,0xfc962460,0x1801000b,0x2802400,0x20962460,0x18010027,0x2802100,0x8962460,0x1801003c,0x2806000,0x40962460, +0x1801003f,0x2802100,0x40962460,0x1801003f,0x2802400,0x40962460,0x1801003f,0x2806400,0x42e62460,0x18010041,0x2802100,0x80962460,0x18010041,0x2806400,0x82f62460,0x18010054, +0x2802000,0x40962460,0x19000000,0x4000000,0x4200000,0x19000000,0x4000000,0xc820000f,0x19000000,0x24000000,0x4200000,0x19000000,0x24000000,0x4400000,0x19000000,0x24000000, +0xc200000,0x19000000,0x24000002,0x4300000,0x19000000,0x24000020,0x4200000,0x19000002,0x4000020,0x4200000,0x19000002,0x7c00100,0x20230400,0x19000002,0x7c00100,0xfc230400, +0x19000002,0x7c00120,0xc8230405,0x19000002,0x80000000,0x5329960,0x19000003,0x4000000,0x5600000,0x19000007,0x7c00100,0x80220400,0x19000007,0x7c00100,0x80250400,0x1900000c, +0x7c00100,0x10220400,0x1900000c,0x7c00100,0x20230400,0x1900000c,0x7c00100,0xfc250400,0x1900000f,0x4000000,0x4200000,0x19000018,0x7c00100,0x21830000,0x19000019,0x7c00100, +0x20220400,0x19000019,0x7c00100,0x20250400,0x19000019,0x7c00100,0xfc250400,0x19000019,0x7c00500,0xc822040f,0x1900003c,0x7c00100,0x40230400,0x19000056,0x7c00100,0x80230400, +0x1900005c,0x6800100,0x40962540,0x1900005c,0x7c00100,0x40230400,0x1900005c,0x7c00500,0x40230400,0x19000071,0x4000000,0x44200000,0x19000071,0x7c00100,0x48230400,0x19000073, +0x6800100,0x40962540,0x19000073,0x7c00100,0x40230400,0x19000073,0x7c00900,0x40230400,0x19000073,0xc000010,0x44448000,0x19000076,0x4000000,0x44400000,0x19000076,0x6800000, +0x41329800,0x19000076,0x6800100,0x40962540,0x19000076,0xc000010,0x44448000,0x1900008d,0x7c00100,0x80230400,0x19000097,0x4000000,0x84200000,0x19000097,0x4000000,0x84400000, +0x19000097,0x6800000,0x81329800,0x19000097,0x6800100,0x80962540,0x19000097,0x7c00100,0x80230400,0x19000097,0x7c00100,0x80230560,0x19000097,0xc000010,0x84448000,0x19000098, +0x6800000,0x81329800,0x19000098,0x7c00100,0x80230400,0x19000099,0x6800000,0x81329800,0x19000099,0x6800100,0x80962540,0x19000099,0x7c00100,0x80230400,0x1900057e,0x7c00100, +0x8230400,0x19005000,0x4000000,0x4e00000,0x19005011,0x7c00300,0xc8e30001,0x19005011,0x7c40300,0x20e30000,0x19008071,0x7c00100,0x48230400,0x19008073,0x7c00100,0x40230400, +0x19008076,0x7c00100,0x40230400,0x19010002,0x2802400,0x20962460,0x19010002,0x2802500,0x10962460,0x19010002,0x2802500,0x20962460,0x19010002,0x2802500,0x30962460,0x19010008, +0x2802100,0x8962460,0x1901005c,0x2802500,0x40962460,0x19010071,0x2802100,0x48962460,0x19010073,0x2802100,0x40962460,0x19010076,0x2802100,0x40962460,0x19010076,0x2802100, +0x40962461,0x19010076,0x2806400,0x40962460,0x19010097,0x2802100,0x80962460,0x19010097,0x2806400,0x80962460,0x19010099,0x2802100,0x80962460,0x19010099,0x2802400,0x80962460, +0x19010099,0x2806400,0x80962460,0x19010980,0x2802400,0x8962460,0x19018071,0x2806400,0x48962460,0x19018073,0x2806400,0x40962460,0x19018076,0x2806400,0x40962460,0x19018584, +0x7c00100,0x8230400,0x1a000000,0x4000000,0x5600000,0x1b000000,0x80000,0xc4918820,0x1b000caf,0x80000,0xc4918820,0x1c000000,0x4000000,0x4100000,0x1c000000,0x4000000, +0x4200000,0x1c000000,0x4000000,0x4e00000,0x1c000000,0x4000000,0x5200000,0x1c000000,0x4000000,0x5500000,0x1c000000,0x4000000,0x5600000,0x1c000000,0x4000000,0x5710000, +0x1c000000,0x4000000,0x6800000,0x1c000000,0x4000400,0x4200400,0x1c000000,0x24000000,0x4200000,0x1c000000,0x24000000,0x4400000,0x1c000000,0x24000000,0x4e00000,0x1c000000, +0x24000002,0x7000000,0x1c000000,0x24000008,0x5410000,0x1c000000,0x80000000,0x5329960,0x1c000002,0x7c00100,0x8230400,0x1c000002,0x7c00100,0x20230400,0x1c000003,0x4000000, +0x4200000,0x1c000004,0x7c00100,0x8230400,0x1c000008,0x7c00100,0x8220400,0x1c000008,0x7c00100,0x8250400,0x1c000008,0x7c00500,0xc822040f,0x1c00000e,0x4000000,0x4200000, +0x1c00000e,0x7c00100,0x8220400,0x1c00000e,0x7c00100,0x8250400,0x1c000019,0x7c00100,0x8220400,0x1c000019,0x7c00100,0x8230400,0x1c000019,0x7c00100,0x8250400,0x1c000019, +0x7c00500,0xc822040f,0x1c00001c,0x6800000,0x21329800,0x1c00001c,0x6800500,0x21862400,0x1c00001c,0x7c00900,0x9830000,0x1c00001e,0x7c00100,0x80230400,0x1c000020,0x7c00100, +0x80230400,0x1c000021,0x4000000,0x4200000,0x1c000021,0x6800000,0x21329800,0x1c000030,0x7c00100,0x40230400,0x1c00004b,0x4000000,0x84200000,0x1c00004b,0x4000010,0x84400000, +0x1c00004b,0x6800000,0x81329800,0x1c00004b,0x7c00100,0x80230400,0x1c00004b,0x7c00900,0x80230400,0x1c00004b,0xc000010,0x84448000,0x1c000053,0x7c00100,0x80230400,0x1c000059, +0x7c00100,0x80230400,0x1c000065,0x4000010,0x84400000,0x1c000065,0x7c00100,0x80230400,0x1c000079,0x4000000,0x84200000,0x1c000079,0x4000000,0x84f00000,0x1c000079,0x4000010, +0x84400000,0x1c000079,0x7c00100,0x80230400,0x1c00007b,0x4000000,0x84200000,0x1c00007b,0x4000010,0x84200000,0x1c00007b,0x7c00100,0x80230400,0x1c000086,0x7c00100,0x80230400, +0x1c000086,0xc000010,0x84448000,0x1c000087,0x4000000,0x84200000,0x1c000087,0x7c00100,0x80230400,0x1c000087,0xc000010,0x84448000,0x1c000088,0x7c00100,0x80230400,0x1c000089, +0x6800100,0x80962540,0x1c000089,0x6800100,0x80962541,0x1c000089,0x7c00100,0x80430400,0x1c000089,0x7c00100,0x82b30400,0x1c000089,0x7c00100,0x82d30400,0x1c000089,0x7c00900, +0x80430400,0x1c00008c,0x4000000,0x84200000,0x1c00008c,0x7c00100,0x80230400,0x1c00008e,0x4000000,0x84200000,0x1c00008e,0x7c00100,0x80230400,0x1c00008f,0x4000000,0x84200000, +0x1c00008f,0x7c00100,0x80230400,0x1c000090,0x4000000,0x84200000,0x1c000090,0x7c00100,0x80230400,0x1c000091,0x6800000,0x81329800,0x1c000091,0x6800100,0x80962540,0x1c000091, +0x7c00100,0x80230400,0x1c000092,0x4000000,0x84200000,0x1c000092,0x6800000,0x81329800,0x1c000092,0x7c00100,0x80220400,0x1c000092,0x7c00100,0x80230400,0x1c000092,0x7c00100, +0x80250400,0x1c000095,0x6800000,0xa1329800,0x1c000095,0x7c00100,0xa0230400,0x1c000095,0xc000010,0x84448000,0x1c000097,0x7c00100,0x80230400,0x1c000097,0xc000010,0x84248000, +0x1c00009d,0x4000000,0x84200000,0x1c00009d,0x4000010,0x84200000,0x1c00009d,0x6800100,0x80962540,0x1c00009d,0x7c00100,0x80230400,0x1c00009d,0xc000010,0x84448000,0x1c00009e, +0x4000000,0x84200000,0x1c00009e,0x6800000,0x81329800,0x1c00009e,0x6800100,0x80962540,0x1c00009e,0x6800100,0x80962541,0x1c00009e,0x7c00100,0x80230400,0x1c00009f,0x4000000, +0x84200000,0x1c00009f,0x7c00100,0x80230400,0x1c0000a0,0x4000000,0x84200000,0x1c0000a0,0x4000000,0x84500000,0x1c0000a0,0x7c00100,0x80230400,0x1c0000a3,0x4000000,0x84200000, +0x1c0000a3,0x6800000,0x81329800,0x1c0000a3,0x6800100,0x80962540,0x1c0000a3,0x7c00100,0x80230400,0x1c0000a3,0xc000010,0x84448000,0x1c0000a5,0x7c00100,0x80230400,0x1c0000a6, +0x4000000,0x84500000,0x1c0000a6,0x4000010,0x84b00000,0x1c0000a6,0x4000800,0x84200000,0x1c0000a6,0x6800100,0x80962540,0x1c0000a6,0x6800100,0x80962541,0x1c0000a6,0x7c00100, +0x80230400,0x1c0000a6,0xc000010,0x84448000,0x1c00045f,0x80000,0xc4918820,0x1c00045f,0x2c000010,0x84448000,0x1c0005a5,0x24000010,0x4400000,0x1c00062f,0x4000000,0xc200000, +0x1c000e33,0x4000010,0x84400000,0x1c000e35,0x6800100,0xfc962540,0x1c005000,0x4000000,0x4e00000,0x1c005000,0x4000000,0x6800000,0x1c00800a,0x7c00100,0x8230400,0x1c00801c, +0x7c00100,0x9830000,0x1c00801c,0x7c00100,0x21830000,0x1c008024,0x7c00100,0x8230400,0x1c010001,0x2400,0x4962460,0x1c010001,0x2802100,0x10962460,0x1c010001,0x2802400, +0x8962460,0x1c010001,0x2802400,0x10962460,0x1c010001,0x2802400,0x10c62460,0x1c010002,0x2802100,0x20962460,0x1c010015,0x2802100,0x8962460,0x1c01001a,0x2802100,0x8962460, +0x1c01001c,0x2802500,0x9862460,0x1c01001c,0x2802500,0x21862460,0x1c010024,0x2802100,0x8962460,0x1c010041,0x2806000,0x80c62460,0x1c01004b,0x2802400,0x80962460,0x1c010059, +0x2802100,0x80962460,0x1c010079,0x2802400,0x80962460,0x1c010086,0x2802400,0x80962460,0x1c010087,0x2802000,0x80962460,0x1c010087,0x2802100,0x80962460,0x1c010089,0x2802100, +0x80962460,0x1c010089,0x2802400,0x80962460,0x1c010089,0x2806400,0x82f62460,0x1c01008c,0x2802400,0x80962460,0x1c010091,0x2802100,0x80962460,0x1c010091,0x2802400,0x80962460, +0x1c010091,0x2806400,0x80962460,0x1c01009d,0x2802100,0x80962460,0x1c01009d,0x2802400,0x80962460,0x1c01009d,0x2802900,0x80962460,0x1c01009d,0x2806400,0x80962460,0x1c01009e, +0x2802100,0x80962460,0x1c01009e,0x2802400,0x80962460,0x1c01009e,0x2806400,0x80962460,0x1c0100a0,0x2802400,0x80962460,0x1c0100a3,0x2802100,0x80962460,0x1c0100a3,0x2806400, +0x80962460,0x1c0100a6,0x2802100,0x80962460,0x1c0100a6,0x2802400,0x80962460,0x1c0100a6,0x2806400,0x80962460,0x1c01097e,0x2802400,0x8962460,0x1c010a2f,0x2802400,0x8962460, +0x1c010e35,0x2802100,0xfc962460,0x1c010e35,0x2802400,0xfc962460,0x20000000,0x4000000,0x5500000,0x20000000,0x4000000,0x24200000,0x20000000,0x4000000,0x24e00000,0x20000000, +0x4000000,0x34200000,0x20000000,0x24000000,0x24200000,0x20000002,0x7c00100,0x20230400,0x20000006,0x7c00100,0x40220400,0x20000006,0x7c00100,0x40250400,0x2000000a,0x4000000, +0x2c500000,0x2000000a,0x7c00100,0x28230400,0x20000019,0x7c00100,0x20220400,0x20000019,0x7c00100,0x20230400,0x20000019,0x7c00100,0x20250400,0x2000001a,0x7c00100,0x8230400, +0x2000004c,0x4000000,0x84200000,0x2000004c,0x7c00100,0x80220400,0x2000004c,0x7c00100,0x80250400,0x20000065,0x7c00100,0x80230400,0x20000070,0x4000000,0x84200000,0x20000070, +0x4000010,0x84400000,0x20000070,0xc000010,0x84448000,0x20000089,0x7c00100,0x82d30400,0x2000008d,0x4000000,0x84200000,0x20000097,0x4000000,0x84400000,0x20000097,0x4000000, +0x84500000,0x20000097,0x7c00100,0x80230400,0x20000097,0xc000010,0x84448000,0x2000009c,0x7c00100,0x80230400,0x2000009c,0x7c00100,0x80830400,0x2000009c,0x7c00100,0x81430400, +0x200000a1,0x4000000,0x85800000,0x200000a1,0x6800000,0x81329800,0x200000a1,0x6800100,0x81862400,0x200000a1,0x6800100,0x81862540,0x200000a1,0x7c00100,0x81830000,0x200000a1, +0xc000010,0x84448000,0x200000a2,0x4000000,0x84200000,0x200000a2,0x7c00100,0x80230400,0x200000a4,0x7c00100,0x80230400,0x200000a4,0xc000010,0x84448000,0x200000a6,0x7c00100, +0x80230400,0x200000a6,0xc000010,0x84448000,0x20005000,0x4000000,0x4e00000,0x20005000,0x4000000,0x6800000,0x20005011,0x7c40300,0x20e30000,0x2000800f,0x7c00100,0x20230400, +0x20008024,0x7c00100,0x20230400,0x20010002,0x2802500,0x20962460,0x20010008,0x2802100,0x28962460,0x20010008,0x2802400,0x30962460,0x20010008,0x2802400,0x30c62460,0x20010070, +0x2802000,0x80962460,0x20010089,0x2802100,0x80962460,0x20010097,0x2802000,0x80962460,0x20010097,0x2802400,0x80962460,0x200100a1,0x2802100,0x81862460,0x200100a1,0x2806400, +0x81862460,0x200100a6,0x2802100,0x80962460,0x20015000,0x4000000,0x6902460,0x24000000,0x4000000,0x4e00000,0x24000000,0x24000000,0x4200000,0x24000000,0x24000000,0x4400000, +0x24000000,0x80000000,0x5329960,0x24000002,0x7c00100,0x20230400,0x24000002,0x7c00100,0xfc230400,0x24000008,0x7c00100,0x8220400,0x2400000e,0x4000000,0x4200000,0x24000015, +0x7c00100,0x20230400,0x24000019,0x7c00100,0x10250400,0x2400001a,0x4000000,0x4200000,0x2400001a,0x7c00100,0x20230400,0x2400001b,0x4000000,0x84500000,0x240000a7,0x4000000, +0x45400000,0x240000a7,0x6800000,0x41329800,0x240000a7,0x7c00100,0x40220400,0x240000a7,0x7c00100,0x40250400,0x240000a8,0x4000000,0x84200000,0x240000a8,0x4000000,0x84400000, +0x240000a8,0x4000010,0x84400000,0x240000a8,0x6800000,0x81329800,0x240000a8,0x6800100,0x80962540,0x240000a8,0x7c00100,0x80230400,0x240000a8,0xc000010,0x84448000,0x240000a9, +0x4000000,0x84500000,0x240000a9,0x4000010,0x84b00000,0x240000a9,0x6800100,0x80962540,0x240000a9,0x7c00100,0x80230400,0x240000aa,0x4000000,0x44200000,0x240000aa,0x4000000, +0x44400000,0x240000aa,0x4000010,0x44400000,0x240000aa,0x6800000,0x41329800,0x240000aa,0x6800100,0x40962540,0x240000aa,0x7c00100,0x40230400,0x240000aa,0xc000010,0x44448000, +0x240000ab,0x7c00100,0x40220400,0x240000ab,0x7c00100,0x40250400,0x2400049a,0x24000000,0x4400000,0x24001000,0x4000000,0x4100000,0x24005000,0x4000000,0x4e00000,0x24005000, +0x4000000,0x6800000,0x24005000,0x4000000,0xc8e0000d,0x2400509a,0x7c00300,0x80e30000,0x2400509a,0x7c00900,0x81230400,0x24010001,0x2802400,0x10962460,0x24010002,0x2802000, +0x10962460,0x24010002,0x2802100,0x10962460,0x24010038,0x2802100,0x80962460,0x2401006f,0x2802100,0x40962460,0x2401009d,0x2802100,0x80962460,0x240100a7,0x2802100,0x40962460, +0x240100a7,0x2802400,0x40962460,0x240100a7,0x2802c00,0x40962460,0x240100a8,0x2802100,0x80962460,0x240100a8,0x2806400,0x80962460,0x240100a9,0x2802100,0x80962460,0x240100aa, +0x2802100,0x40962460,0x240100aa,0x2802400,0x40962460,0x240100aa,0x2806400,0x40962460,0x28000000,0x4000000,0x4200000,0x28000000,0x4000000,0x4e00000,0x28000000,0x4000000, +0x5600000,0x28000000,0x24000000,0x4200000,0x28000000,0x24000000,0x4400000,0x28000004,0x4000000,0x4200000,0x28000004,0x7c00100,0x8230400,0x2800001e,0x7c00100,0x80230400, +0x28000022,0x7c00100,0x40230400,0x280000af,0x6800000,0x81329800,0x280000af,0x7c00100,0x80230400,0x280000af,0x7c00100,0x80230560,0x280000b0,0x4000000,0x84400000,0x280000b0, +0x4000000,0x84500000,0x280000b0,0x4000010,0x84400000,0x280000b0,0x6800100,0x80962540,0x280000b0,0x7c00100,0x80230560,0x280000b0,0xc000010,0x84448000,0x280000b1,0x4000000, +0x84200000,0x280000b1,0x4000000,0x84400000,0x280000b1,0x4000000,0x84500000,0x280000b1,0x6800100,0x80962540,0x280000b1,0xc000010,0x84448000,0x28000584,0x6800400,0x8962540, +0x28005000,0x4000000,0x4e00000,0x28005000,0x4000000,0x6800000,0x28005005,0x7c00100,0x48e30400,0x28005011,0x7c40300,0x20e30000,0x28005014,0x7c00100,0x8e30000,0x28005096, +0x7c00300,0x80e30000,0x28005096,0x7c00900,0x81230400,0x280080b0,0x7c00100,0x80230400,0x280080b1,0x7c00100,0x80230400,0x28010001,0x2802400,0x10962460,0x2801000f,0x2802100, +0x20962460,0x2801000f,0x2802400,0x20962460,0x2801000f,0x2802900,0x20962460,0x2801001a,0x2802100,0x20962460,0x2801001a,0x2806400,0x8962460,0x280100af,0x2802100,0x80962460, +0x280100af,0x2802400,0x80962460,0x280100af,0x2806400,0x80962460,0x280100b0,0x2802100,0x80962460,0x280100b0,0x2802800,0x80962460,0x280100b1,0x2802000,0x80962460,0x280100b1, +0x2802100,0x80962460,0x280100b1,0x2806400,0x80962460,0x28010985,0x2802400,0x10962460,0x280180b0,0x2806400,0x80962460,0x280180b1,0x2806400,0x80962460,0x280180b1,0x7c00100, +0x80230400,0x2c000000,0x4000000,0x4200000,0x2c000000,0x4000000,0x4e00000,0x2c000000,0x4000000,0x5500000,0x2c000000,0x24000000,0x4200000,0x2c000000,0x24000000,0x4400000, +0x2c000000,0x24000010,0x4400000,0x2c000003,0x7c00100,0x10220400,0x2c00000a,0x7c00100,0x8230400,0x2c00000c,0x7c00100,0xfc230400,0x2c000010,0x4000000,0x4200000,0x2c000013, +0x7c00100,0x22633800,0x2c000015,0x4000000,0x4500000,0x2c000019,0x7c00100,0x10220400,0x2c000019,0x7c00100,0x20220400,0x2c000019,0x7c00100,0x20250400,0x2c00001b,0x7c00100, +0x80230400,0x2c000039,0x4000000,0x84200000,0x2c000057,0x4000000,0x45600000,0x2c000076,0x6800100,0x40962540,0x2c000078,0x80000000,0x85329960,0x2c0000a1,0x7c00100,0x81830000, +0x2c0000b0,0x7c00100,0x80230400,0x2c0000b2,0x4000000,0x84200000,0x2c0000b2,0x6800100,0x80962540,0x2c0000b2,0x7c00100,0x80230400,0x2c0000b3,0x6800000,0x81329800,0x2c0000b3, +0x6800100,0x80962540,0x2c0000b3,0x7c00100,0x80230400,0x2c0000b4,0x6800100,0x80962540,0x2c0000b4,0x7c00100,0x80430400,0x2c0000b4,0x7c00100,0x82d30400,0x2c0000b4,0xc000010, +0x84448000,0x2c0000b5,0x4000000,0x84200000,0x2c0000b5,0x4000010,0x84400000,0x2c0000b5,0x7c00100,0x80220400,0x2c0000b5,0x7c00100,0x80250400,0x2c0000b5,0xc000010,0x84448000, +0x2c0000b6,0x6800000,0x41329800,0x2c0000b6,0x7c00100,0x40230400,0x2c0000b6,0x7c00500,0x40230400,0x2c0000b7,0x4000000,0x84200000,0x2c0000b7,0x7c00100,0x80230400,0x2c0000b7, +0xc000010,0x84248000,0x2c0000b8,0x4000000,0x84200000,0x2c0000b8,0x7c00100,0x80230400,0x2c005000,0x4000000,0x4200000,0x2c005000,0x4000000,0x4e00000,0x2c005000,0x4000000, +0x6800000,0x2c005005,0x7c00100,0x40e30400,0x2c005011,0x7c40300,0x20e30000,0x2c00509a,0x7c00300,0x80e30000,0x2c008039,0x7c00100,0x80230400,0x2c008076,0x7c00100,0x40230400, +0x2c010002,0x2802400,0x10962460,0x2c010004,0x2802000,0x20962460,0x2c01000a,0x2802100,0x8962460,0x2c010024,0x2802100,0x20962460,0x2c010057,0x2802000,0x40962460,0x2c0100aa, +0x2802000,0x40962460,0x2c0100b2,0x2802100,0x80962460,0x2c0100b2,0x2802400,0x80962460,0x2c0100b2,0x2806400,0x80962460,0x2c0100b3,0x2802100,0x80962460,0x2c0100b3,0x2806400, +0x80962460,0x2c0100b4,0x2802100,0x80962460,0x2c0100b6,0x2802500,0x40962460,0x2c0100b7,0x2802400,0x80962460,0x2c01092e,0x2802400,0x20962460,0x30000000,0x4000000,0x4200000, +0x30000000,0x4000000,0xc820000f,0x30000000,0x24000000,0x4200000,0x30000000,0x24000010,0x4400000,0x30000018,0x7c00100,0x21830000,0x30000019,0x7c00100,0x8250400,0x30000019, +0x7c00100,0x10220400,0x30000019,0x7c00100,0x10250400,0x30000019,0x7c00100,0x20220400,0x30000019,0x7c00100,0x20250400,0x30000023,0x4000000,0x4200000,0x30000023,0x4000000, +0x4400000,0x30000023,0x4000000,0x5500000,0x30000024,0x4000000,0x4500000,0x30000047,0,0x84818820,0x30000047,0,0x84c18820,0x30000047,0,0x85418820, +0x3000005c,0x6800100,0x40962540,0x3000005c,0x7c00100,0x40230400,0x30000099,0x7c00100,0x80230400,0x300000a7,0x7c00100,0x40230400,0x300000aa,0x7c00100,0x40230400,0x300000b0, +0x7c00100,0x80230560,0x300000b9,0x7c00100,0x80230400,0x300000ba,0x4000000,0x44200000,0x300000ba,0x6800000,0x41329800,0x300000ba,0x7c00100,0x40230400,0x300000ba,0x7c00900, +0x40230400,0x300000bb,0x4000000,0x84500000,0x300000bb,0x6800100,0x80962540,0x300000bb,0x7c00100,0x80230400,0x300000bc,0x4000000,0x45600000,0x300000bc,0x6800000,0x41329800, +0x300000bc,0x7c00100,0x40230400,0x300004db,0x7c00100,0x80230400,0x30000d30,0x4000000,0x4200000,0x30005000,0x4000000,0x4e00000,0x30005000,0x4000000,0x6800000,0x30005011, +0x4000000,0x5200000,0x30005011,0x7c00900,0x9230400,0x30005014,0x7c00100,0xa530000,0x30005016,0x7c00100,0xa530c00,0x3000509a,0x7c00300,0x80e30000,0x30010018,0x2806400, +0x21862460,0x3001005c,0x2802100,0x40962460,0x300100ba,0x2802400,0x40962460,0x300100bb,0x2802100,0x80962460,0x300100bb,0x2806400,0x80962460,0x300100bc,0x2802400,0x40962460, +0x310055c4,0x4000000,0xc8e0000d,0x34000000,0x4000000,0x4200000,0x34000000,0x4000400,0x4200000,0x34000000,0x6800000,0xc9329805,0x34000000,0x24000000,0x4200000,0x34000002, +0x7c00100,0x20230400,0x34000002,0x7c00100,0xfc230400,0x34000019,0x7c00100,0x8220400,0x34000019,0x7c00100,0x8250400,0x34000019,0x7c00100,0x10220400,0x34000019,0x7c00500, +0xc822040f,0x3400001a,0x7c00100,0x18230400,0x34000083,0x7c00100,0x40230400,0x34000097,0x6800100,0x80962540,0x340000aa,0x4000010,0x44400000,0x340000aa,0x7c00100,0x40230400, +0x340000bd,0x4000000,0x84200000,0x340000bd,0x7c00100,0x80230400,0x340000be,0x4000000,0x84400000,0x340000be,0x6800000,0x82d29800,0x340000be,0x6800100,0x80962540,0x340000be, +0x6800100,0x80962541,0x340000be,0x7c00100,0x82c30560,0x340000be,0xc000010,0x84448000,0x340000c0,0x4000002,0x87000000,0x340000c0,0x7c00100,0x80230400,0x34005000,0x4000000, +0x4e00000,0x34005000,0x4000000,0x6800000,0x34005005,0x7c00100,0x40e30400,0x34005011,0x7c40300,0x20e30000,0x3400509a,0x7c00300,0x80e30000,0x340050bf,0x7c00300,0x80230000, +0x34008076,0x7c00100,0x40230400,0x340080be,0x7c00100,0x82b30400,0x34010001,0x2802100,0x10962460,0x3401001f,0x2802c00,0x20962460,0x34010021,0x2802100,0x10962460,0x3401003a, +0x2806400,0x40962460,0x34010097,0x2802100,0x80962460,0x340100be,0x2802100,0x80962460,0x340100be,0x2802400,0x80962460,0x340100be,0x2806400,0x80962460,0x340100c0,0x2802100, +0x80962460,0x34015011,0x2802500,0x8962460,0x340150bf,0x2802200,0x80c62460,0x340180be,0x2806400,0x82f62460,0x38000000,0x4000000,0x5500000,0x38000000,0x4000000,0x14200000, +0x38000000,0x24000000,0x5410000,0x38000000,0x24000000,0x6410000,0x38000000,0x24000002,0x7000000,0x38000000,0x2c000010,0x4b48000,0x38000002,0x4000000,0x14200000,0x38000002, +0x7c00100,0x8230400,0x38000002,0x7c00100,0x10230400,0x38000002,0x7c00100,0x20230400,0x38000002,0x7c00500,0x10230400,0x38000002,0xc000010,0x4b48000,0x38000002,0x80000000, +0x5329960,0x3800000b,0x7c00100,0xfc230400,0x38000015,0x7c00100,0x20230400,0x38000019,0x7c00100,0x8220400,0x38000019,0x7c00100,0x8250400,0x38000019,0x7c00100,0x10220400, +0x38000019,0x7c00100,0x10230400,0x38000019,0x7c00100,0xc822040f,0x38000019,0x7c00500,0x20220400,0x38000019,0x7c00500,0xc822040f,0x38000019,0x7c00d00,0xc823040f,0x38000024, +0x7c00100,0x20230400,0x38000028,0x7c00100,0x40230400,0x3800002a,0x7c00100,0x80230400,0x38000038,0x7c00100,0x80220400,0x38000038,0x7c00100,0x80250400,0x3800003e,0xc000010, +0x44448000,0x38000041,0x7c00100,0x82b30400,0x38000099,0x4000000,0x84200000,0x380000a1,0x7c00100,0x81830000,0x380000c1,0x4000000,0x84200000,0x380000c1,0x7c00100,0x80230400, +0x380000c2,0x7c00100,0x80230400,0x380000c2,0xc000010,0x84248000,0x380000c3,0x6800000,0x81329800,0x380000c3,0x7c00100,0x80230400,0x380000c4,0x7c00100,0x80230400,0x380000c5, +0x7c00100,0x80220400,0x380000c5,0x7c00100,0x80250400,0x38005000,0x4000000,0x4e00000,0x38005000,0x4000000,0x6800000,0x38005011,0x7c40300,0x20e30000,0x38005014,0x7c00100, +0x8e30000,0x38005016,0x7c00100,0x8e30c00,0x38005016,0x7c00500,0x20230c00,0x3800803e,0x7c00100,0x42b30400,0x38010001,0x2802100,0x20962460,0x38010001,0x2802400,0x10962460, +0x38010001,0x2802400,0x20962460,0x38010002,0x2802400,0x10962460,0x3801001b,0x12882000,0xc4962460,0x38010024,0x2802400,0x20962460,0x3801002a,0x2806400,0x80962460,0x38010041, +0x2802100,0x80962460,0x38010041,0x2806400,0x80962460,0x38010078,0x2802100,0x80962460,0x380100c2,0x2802400,0x80962460,0x380100c4,0x2802400,0x80962460,0x38010880,0x2802400, +0x50962460,0x3c000000,0x4000000,0x4200000,0x3c000000,0x4000000,0x4e00000,0x3c000008,0x7c00500,0xc822040e,0x3c000008,0x7c00500,0xc822040f,0x3c00000a,0x4000000,0x4500000, +0x3c000015,0x6800100,0x20962540,0x3c000019,0x7c00100,0x10220400,0x3c000047,0,0x84818820,0x3c000047,0,0x84c18820,0x3c000047,0,0x85418820,0x3c000047, +0x7c00100,0x80230400,0x3c000047,0x7c00100,0x81430400,0x3c00009d,0x7c00100,0x80230400,0x3c0000c6,0x4000000,0x84e00000,0x3c0000c6,0x6800000,0x82d29800,0x3c0000c6,0x6800100, +0x80962540,0x3c0000c6,0x7c00100,0x82c30560,0x3c0000c6,0xc000010,0x84448000,0x3c0000c7,0x6800000,0x81329800,0x3c0000c7,0x7c00100,0x80230400,0x3c005000,0x4000000,0x4e00000, +0x3c005000,0x4000000,0x6800000,0x3c005011,0x7c40300,0x20e30000,0x3c005014,0x7c00100,0xa530000,0x3c005016,0x7c00100,0xa530c00,0x3c0080c6,0x7c00100,0x82b30400,0x3c010002, +0x2802400,0x10962460,0x3c010008,0x2802100,0x8962460,0x3c010018,0x2802000,0x21862460,0x3c010047,0x2802000,0x80962460,0x3c010047,0x2802400,0x80962460,0x3c01009d,0x2802100, +0x80962460,0x3c0100c6,0x2802100,0x80962460,0x3c0100c6,0x2806400,0x80962460,0x3c0100c7,0x2802000,0x80962460,0x3c0180c6,0x2806400,0x82f62460,0x3d005011,0x7c40300,0x20e30000, +0x3d0055a8,0x4000000,0x4e00000,0x3d0055a8,0x4008000,0x4e00000,0x40000000,0x4000000,0x4200000,0x40000000,0x4000000,0xc8200005,0x40000000,0x6800000,0xc9329805,0x40000000, +0x24000000,0x4200000,0x40000002,0x7c00100,0x20230400,0x40000008,0x7c00100,0x20220400,0x40000008,0x7c00100,0x20250400,0x40000019,0x7c00100,0x20220400,0x40000019,0x7c00100, +0x20250400,0x4000001c,0x6800000,0x21329800,0x4000003e,0xc000010,0x44448000,0x40000047,0x7c00100,0x80230400,0x400000c9,0x4000002,0x87000000,0x400000c9,0x4000020,0x84200000, +0x400000c9,0x6800000,0x81329800,0x400000c9,0x7c00100,0x80220400,0x400000c9,0x7c00100,0x80230400,0x400000c9,0x7c00100,0x80250400,0x400000c9,0x7c00900,0x80230400,0x400000c9, +0x7c00d00,0x80230400,0x400000ca,0x6800000,0x82d29800,0x400000ca,0x6800100,0x80962540,0x400000ca,0x7c00100,0x82d30400,0x400000cb,0x4000000,0x84200000,0x400000cb,0x6800000, +0x81329800,0x400000cb,0x7c00100,0x80230400,0x400000cb,0x7c00100,0x80230520,0x400000cb,0x7c00100,0x80230521,0x400000cb,0x7c00500,0x80230400,0x400000cb,0xc000010,0x84448000, +0x400000cc,0x4000000,0x84200000,0x400000cc,0x6800000,0x81329800,0x400000cc,0x7c00100,0x80230400,0x400000cd,0x4000000,0x84200000,0x400000cd,0x6800000,0x81329800,0x400000cd, +0x7c00100,0x80230400,0x400000ce,0x7c00100,0x80230400,0x400000ce,0x7c00100,0x80230401,0x400000cf,0x4000000,0x84e00000,0x400000cf,0x6800100,0x80962540,0x400000cf,0x7c00100, +0x80e30400,0x400000cf,0x7c00100,0x82c30560,0x400000cf,0x7c00d00,0x80e30400,0x400000cf,0xc000010,0x84e48000,0x40005000,0x4000000,0x4e00000,0x400050bf,0x7c00300,0x80230000, +0x400055c4,0x4000000,0x4e00000,0x400080cf,0x7c00100,0x82b30400,0x400080cf,0x7c00100,0x82d30400,0x400080cf,0x7c00100,0x82d30401,0x40010002,0x2802100,0x10962460,0x40010002, +0x2802100,0x20962460,0x400100c6,0x2802400,0x80962460,0x400100c9,0x2802400,0x80962460,0x400100c9,0x2802500,0x80962460,0x400100c9,0x2802c00,0x80962460,0x400100ca,0x2802100, +0x80962460,0x400100ca,0x2802100,0x80962461,0x400100ca,0x2806400,0x80962460,0x400100cc,0x2802400,0x80962460,0x400100cc,0x2802c00,0x80962460,0x400100cf,0x2802100,0x80962460, +0x400100cf,0x2802100,0x80962461,0x400100cf,0x2802400,0x80962460,0x400100cf,0x2802c00,0x80962460,0x400100cf,0x2806400,0x80962460,0x400180cf,0x2806400,0x82f62460,0x44000000, +0x4000000,0x4200000,0x44000000,0x4000000,0x5600000,0x44000000,0x4000020,0x4200000,0x44000000,0x24000000,0x4200000,0x44000002,0x4000000,0x4200000,0x44000002,0x4000000, +0x4400000,0x44000002,0x4000000,0x14200000,0x44000002,0x7c00100,0x10230400,0x44000002,0x7c00100,0x20230400,0x44000002,0x7c00100,0xfc230400,0x44000015,0x7c00100,0x8230400, +0x44000019,0x7c00100,0x8250400,0x44000019,0x7c00100,0x20220400,0x44000019,0x7c00100,0x20250400,0x44000019,0x7c00500,0xc822040f,0x44000024,0x7c00100,0x8230400,0x44000097, +0x6800100,0x80962540,0x440000d0,0x7c00100,0x80220400,0x440000d0,0x7c00100,0x80250400,0x440000d1,0x7c00100,0x80230400,0x440000d2,0x7c00100,0x80230400,0x440000d3,0x6800000, +0x81329800,0x440000d3,0x7c00100,0x80230400,0x440000d3,0x7c00d00,0x80230400,0x44005000,0x4000000,0x4e00000,0x44005011,0x7c00300,0x10e30000,0x44005011,0x7c00b00,0x11230000, +0x44005011,0x7c40300,0x20e30000,0x4400509a,0x7c00300,0x80e30000,0x44010001,0x2802400,0x10962460,0x44010001,0x2802400,0x10c62460,0x44010002,0x2802100,0x10962460,0x44010002, +0x2802500,0x8962460,0x44010097,0x2802100,0x80962460,0x440100d2,0x2802100,0x80962460,0x48000000,0x4000000,0x4200000,0x48000000,0x4000000,0x5600000,0x48000000,0x4000000, +0x14200000,0x48000000,0x4000020,0x4200000,0x48000000,0x7c00120,0xc8220405,0x48000000,0x7c00500,0x10530400,0x48000000,0x24000000,0x4810000,0x48000000,0x24000000,0x5410000, +0x48000000,0x2c000010,0x4b48000,0x48000002,0x4000000,0x14200000,0x48000002,0x7c00100,0x8230400,0x48000003,0x7c00500,0xc822040f,0x4800000e,0x7c00500,0xc822040f,0x48000019, +0x7c00100,0x8250400,0x48000019,0x7c00100,0x10220400,0x48000019,0x7c00100,0x10250400,0x48000019,0x7c00100,0x18220400,0x48000019,0x7c00100,0x18230400,0x48000019,0x7c00100, +0x18250400,0x48000019,0x7c00100,0x20220400,0x48000019,0x7c00100,0xc8220402,0x48000019,0x7c00100,0xc822040e,0x48000019,0x7c00100,0xc822040f,0x48000019,0x7c00500,0xc822040f, +0x48000065,0x7c00100,0x80230400,0x480000d5,0x7c00100,0x80230400,0x48000e39,0x7c00100,0x80230400,0x48005000,0x4000000,0x4e00000,0x48005000,0x4000000,0x6800000,0x48005011, +0x7c40300,0x20e30000,0x48005014,0x7c00100,0xc8e30010,0x48005016,0x7c00100,0x8e30c00,0x48005016,0x7c00100,0x12530c00,0x48005016,0x7c00100,0xc8e30c10,0x48005094,0x7c00300, +0x80e30000,0x4800509a,0x7c00300,0x80e30000,0x480050bf,0x7c00300,0x80230000,0x480050d6,0x7c00300,0x80e30000,0x48008004,0x7c00100,0x10230400,0x4800800a,0x7c00100,0xfc230400, +0x48010000,0x2802000,0x10962460,0x48010000,0x2802400,0x10962460,0x48010001,0x2802000,0x10962460,0x48010001,0x2802400,0x10962460,0x48010002,0x2802100,0x10962460,0x48010002, +0x2802400,0x8962460,0x48010002,0x2802400,0x10962460,0x48010002,0x2802500,0x10962460,0x48010004,0x2802100,0x8962460,0x48010013,0x2802500,0x10962460,0x4801001f,0x2802400, +0x20962460,0x4801001f,0x2802c00,0x20962460}; -static const int32_t countPropsVectors=6813; +static const int32_t countPropsVectors=6996; static const int32_t propsVectorsColumns=3; -static const uint16_t scriptExtensions[562]={ +static const uint16_t scriptExtensions[572]={ 7,0xc,0xd,0xe,0x11,0x19,0x33,0x38,0x59,0x68,0x6c,0x75,0x87,0x88,0xa0,0x80b3, 4,8,0xa,0x19,0x26,0x83,0x80c4,5,0x8019,0x19,0x8083,0x19,0x8026,6,7,8, 0xe,0x19,0x34,0x59,0x80cd,6,8,0xe,0x19,0x34,0xab,0xcd,0x80ce,6,8,0x19, @@ -4699,31 +4797,31 @@ static const uint16_t scriptExtensions[562]={ 0x21,0x23,0x24,0x3a,0x89,0x91,0x99,0x9e,0xa0,0xaf,0xb2,0xb3,0xbb,0x80cc,4,0xa, 0xf,0x10,0x15,0x1a,0x1f,0x21,0x23,0x24,0x30,0x3a,0x89,0x91,0x99,0x9e,0xa0,0xaf, 0xb2,0xb3,0xbb,0xca,0x80cc,0xa,0x78,0xa0,0x80b2,0xa,0x115,4,0x3a,0x8076,4,0x11b, -0x10,0x80a4,0x10,0x120,0xf,0x809d,0xf,0x124,0x23,0x8089,0x23,0x128,0x15,0xbb,0x80cf,0x15, -0x12c,0x1c,0x34,0x8076,0x1c,0x131,0xc,0x19,0x8038,0x8020,0x2a,0x2b,0x2c,0x802d,0x1b,0x805a, -0x800a,4,0xa,0x15,0x8089,4,0xa,0x24,0x9e,0x80aa,4,0xa,0x8024,0xa,0x97,0x80aa, -4,0xa,0x24,0x80aa,0xa,0x8097,0xa,0x15,0x1a,0x1f,0x23,0x8024,4,0x800a,0xa,0x9e, -0x80aa,0xa,0xaa,0x80bb,4,0xa,0x8097,0xa,0x80aa,4,0xa,0x97,0x80aa,4,0xa,0x15, -0x1a,0x1f,0x21,0x24,0x89,0x9e,0xbb,0x80cf,0xa,0x8089,0xa,0x15,0x89,0x80cf,0x8004,8, -0x19,0x8022,0x19,0x1b,0x805a,2,0x80a7,0xc,0x38,0x4c,0x58,0x68,0x806b,0xe,0x4c,0x56, -0x8068,0xa,0x19,0x8089,7,0x8019,0x58,0x8075,0xc,0x4c,0x68,0x6c,0x75,0x78,0x807e,2, -0x4c,0x80a7,0x11,0x809a,5,0x11,0x12,0x14,0x16,0x8029,5,0x11,0x12,0x14,0x16,0x1b, -0x8029,5,0x11,0x12,0x14,0x16,0x1b,0x29,0x805a,5,0x11,0x12,0x14,0x8016,0x8011,5, -0x11,0x12,0x14,0x16,0x1b,0x27,0x8029,5,0x11,0x12,0x14,0x16,0x1b,0x27,0x29,0x8083, -5,0x8011,0x11,0x14,0x8016,0x11,0x8019,0xa,0xf,0x10,0x15,0x1a,0x78,0x91,0x97,0x99, -0x9d,0x9e,0xa0,0xa3,0xb2,0xbb,0x80cf,0xa,0xf,0x10,0x15,0x78,0x91,0x97,0x99,0x9d, -0x9e,0xa0,0xa3,0xb2,0xbb,0x80cf,0xa,0xf,0x10,0x78,0x91,0x99,0x9d,0x9e,0xa0,0xa3, -0x80b2,0xa,0xf,0x10,0x78,0x91,0x97,0x99,0x9d,0x9e,0xa0,0xa3,0x80b2,4,0xa,0x80cf, -0xa,0x20d,0xa,0x8023,0xa,0x212,0x19,0x1c,0x804f,0x37,0x804e,2,0x8057,2,0x8025,2, -0x21d,0x2f,0x31,0x8053,0x2f,0x31,0x80c1,0x2f,0x8031,2,0x8007,0x79,0x80c2,0x79,0x22b,0x89, -0x128,0}; +0x10,0x80a4,0x10,0x120,0xf,0x809d,0xf,0x124,0x15,0x1a,0x23,0x8024,0x23,0x128,0x23,0x8089, +0x23,0x12e,0x15,0xbb,0x80cf,0x15,0x132,0x1c,0x34,0x8076,0x1c,0x137,0xc,0x19,0x8038,0x8020, +0x2a,0x2b,0x2c,0x802d,0x1b,0x805a,0x800a,4,0xa,0x15,0x8089,4,0xa,0x24,0x9e,0x80aa, +4,0xa,0x8024,0xa,0x97,0x80aa,4,0xa,0x24,0x80aa,0xa,0x8097,0xa,0x15,0x1a,0x1f, +0x23,0x8024,4,0x800a,0xa,0x9e,0x80aa,0xa,0xaa,0x80bb,4,0xa,0x8097,0xa,0x80aa,4, +0xa,0x97,0x80aa,4,0xa,0x15,0x1a,0x1f,0x21,0x24,0x89,0x9e,0xbb,0x80cf,0xa,0x8089, +0xa,0x15,0x89,0x80cf,0x8004,8,0x19,0x8022,0x19,0x1b,0x805a,2,0x80a7,0xc,0x38,0x4c, +0x58,0x68,0x806b,0xe,0x4c,0x56,0x8068,0xa,0x19,0x8089,7,0x8019,0x58,0x8075,0xc,0x4c, +0x68,0x6c,0x75,0x78,0x807e,2,0x4c,0x80a7,0x11,0x809a,5,0x11,0x12,0x14,0x16,0x8029, +5,0x11,0x12,0x14,0x16,0x1b,0x8029,5,0x11,0x12,0x14,0x16,0x1b,0x29,0x805a,5, +0x11,0x12,0x14,0x8016,0x8011,5,0x11,0x12,0x14,0x16,0x1b,0x27,0x8029,5,0x11,0x12, +0x14,0x16,0x1b,0x27,0x29,0x8083,5,0x8011,0x11,0x14,0x8016,0x11,0x8019,0xa,0xf,0x10, +0x15,0x1a,0x78,0x91,0x97,0x99,0x9d,0x9e,0xa0,0xa3,0xb2,0xbb,0x80cf,0xa,0xf,0x10, +0x15,0x78,0x91,0x97,0x99,0x9d,0x9e,0xa0,0xa3,0xb2,0xbb,0x80cf,0xa,0xf,0x10,0x78, +0x91,0x99,0x9d,0x9e,0xa0,0xa3,0x80b2,0xa,0xf,0x10,0x78,0x91,0x97,0x99,0x9d,0x9e, +0xa0,0xa3,0x80b2,4,0xa,0x80cf,0xa,0x213,0xa,0x8023,0xa,0x218,0x19,0x1c,0x804f,0x37, +0x804e,2,0x8057,2,0x8025,2,0x223,0x2f,0x31,0x8053,0x2f,0x31,0x80c1,0x2f,0x8031,2, +0x8007,0x79,0x80c2,0x79,0x231,0x89,0x12e,0x65,0x80d5,0x65,0x237,0}; -static const uint16_t block_trieIndex[834]={ +static const uint16_t block_trieIndex[873]={ 0,0x40,0x80,0xc0,0x100,0x140,0x180,0x1c0,0x200,0x240,0x280,0x2c0,0x300,0x340,0x340,0x340, 0x340,0x340,0x340,0x364,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384, 0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x3c4,0x3fb,0x43b,0x47b,0x47b,0x47b,0x47b,0x47b, 0x47b,0x47b,0x47b,0x47b,0x47b,0x480,0x4c0,0x500,0x540,0x540,0x540,0x540,0x540,0x540,0x570,0x5a5, -0x2f0,0x30a,0x30a,0x31a,0x33a,0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xa0, +0x311,0x331,0x331,0x341,0x361,0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xa0, 0xb0,0xc0,0xd0,0xe0,0xf0,0x100,0x110,0x120,0x130,0x140,0x150,0x160,0x170,0x180,0x190,0x1a0, 0x1b0,0x1c0,0x1d0,0x1e0,0x1f0,0x200,0x210,0x220,0x230,0x240,0x250,0x260,0x270,0x280,0x290,0x2a0, 0x2b0,0x2c0,0x2d0,0x2e0,0x2f0,0x300,0x310,0x320,0x330,0x340,0x350,0x360,0x370,0x340,0x350,0x360, @@ -4736,45 +4834,47 @@ static const uint16_t block_trieIndex[834]={ 0x570,0x540,0x550,0x560,0x570,0x540,0x550,0x560,0x570,0x540,0x550,0x560,0x570,0x570,0x580,0x590, 0x5a0,0x5a5,0x5b5,0x5c5,0x5d5,0x5e5,0x5f5,0x605,0x615,0x625,0x635,0x645,0x64d,0x65d,0x66d,0x67d, 0x68d,0x69d,0x6ad,0x6b7,0x6c7,0x6d7,0x6e7,0x6f7,0x707,0x717,0x725,0x735,0x745,0x755,0x765,0x775, -0x785,0x795,0x7a5,0x7b4,0x7c4,0x7d4,0x7d4,0x7d4,0x7d4,0x7e4,0x7ef,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4, -0x7f4,0x7f4,0x7f4,0x7f4,0x7fb,0x80b,0x80b,0x80b,0x80b,0x818,0x81e,0x81e,0x81e,0x81e,0x81e,0x81e, -0x81e,0x81e,0x81e,0x81e,0x81e,0x82e,0x82e,0x836,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4, -0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4, -0x7f4,0x846,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x856,0x856,0x862,0x872,0x7f4,0x87e,0x88a,0x89a, -0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa, -0x8ba,0x8ba,0x8ba,0x8ca,0x8ca,0x8da,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4, -0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x8ea,0x8fa,0x90a,0x911,0x7f4,0x7f4,0x7f4,0x7f4, -0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x921,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4, -0x7f4,0x7f4,0x931,0x931,0x935,0x945,0x955,0x965,0x975,0x985,0x995,0x995,0x995,0x995,0x9a5,0x9a5, -0x9aa,0x7f4,0x7f4,0x7f4,0x7f4,0x9ba,0x9ca,0x9da,0x9e1,0x7f4,0x9f1,0xa01,0xa11,0xa21,0xa31,0xa41, -0x7f4,0x7f4,0xa4a,0xa5a,0xa6a,0x7f4,0xa7a,0xa8a,0xa9a,0xaaa,0xaaa,0xaaa,0xaba,0xaca,0xada,0xaea, -0xafa,0xb0a,0x7f4,0x7f4,0x7f4,0x7f4,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a, -0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a, -0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1a,0xb1c,0xb2c,0xb2c,0xb2c,0xb2c,0xb2c,0xb2c,0xb2c,0xb2c,0xb2c, -0xb2c,0xb2c,0xb2c,0xb2c,0xb2c,0xb2c,0xb2c,0xb38,0xb46,0xb48,0xb48,0xb48,0xb48,0xb48,0xb48,0xb48, -0xb48,0xb48,0xb48,0xb48,0xb48,0xb48,0xb48,0xb4d,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58, -0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb59,0xb68,0xb68,0xb72,0x7f4,0x7f4,0x7f4, -0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0xb82,0xb82,0xb90,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0xba0,0xba0, -0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0, -0xba0,0xbab,0xbb0,0xbb0,0xbb0,0xbb0,0xbb0,0xbb0,0xbb0,0xbb0,0xbb0,0xbb0,0xbb0,0xbb0,0xbb5,0xbc0, -0xbc0,0xbc0,0xbc0,0xbc0,0xbc0,0xbc0,0xbc0,0xbc0,0xbc0,0xbc0,0xbc0,0xbc0,0xbc0,0xbc0,0xbc0,0xbc8, -0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4, -0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4, -0xbd8,0xbe8,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4, -0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4,0x7f4, -0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8, -0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8,0xbf8, -0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08, -0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08, -0x45,0x65,0x79,0x89,0x89,0xa9,0xb5,0xd5,0xf5,0x115,0x131,0x150,0x168,0x179,0x196,0x1b6, -0x1d6,0x1d6,0x1d6,0x1d6,0x1d6,0x1f0,0x209,0x21e,0x23e,0x25b,0x270,0x270,0x270,0x270,0x270,0x270, -0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270, -0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x290,0x270,0x270,0x270,0x270,0x270, -0x270,0x270,0x2b0,0x2b0,0x2b0,0x2b0,0x2b0,0x2b0,0x2b0,0x2b0,0x2d0,0x2d0,0x2d0,0x2d0,0x2d0,0x2d0, -0x2d0,0x2d0 +0x785,0x795,0x7a5,0x7b5,0x7c5,0x7d5,0x7d5,0x7d5,0x7d5,0x7e5,0x7f0,0x7f7,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x807,0x817,0x817,0x817,0x817,0x824,0x82a,0x82a,0x82a,0x82a,0x82a,0x82a, +0x82a,0x82a,0x82a,0x82a,0x82a,0x83a,0x83a,0x842,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x852,0x800,0x800,0x800,0x800,0x800,0x800,0x862,0x862,0x86e,0x87e,0x800,0x88a,0x896,0x8a6, +0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6,0x8b6, +0x8c6,0x8c6,0x8c6,0x8d6,0x8d6,0x8e6,0x8f6,0x8f6,0x8f6,0x8fc,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x90a,0x91a,0x92a,0x931,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x941,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x951,0x951,0x955,0x965,0x975,0x985,0x995,0x9a5,0x9b5,0x9b5,0x9b5,0x9b5,0x9c5, +0x9c5,0x9ca,0x9da,0x800,0x800,0x800,0x9ea,0x9fa,0xa0a,0xa11,0x800,0xa21,0xa31,0xa41,0xa51,0xa61, +0xa71,0x800,0x800,0xa7a,0xa8a,0xa9a,0x800,0xaaa,0xaba,0xaca,0xada,0xada,0xada,0xaea,0xafa,0xb0a, +0xb1a,0xb2a,0xb3a,0x800,0x800,0x800,0x800,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a, +0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a, +0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4a,0xb4c,0xb5c,0xb5c,0xb5c,0xb5c,0xb5c,0xb5c,0xb5c,0xb5c, +0xb5c,0xb5c,0xb5c,0xb5c,0xb5c,0xb5c,0xb5c,0xb5c,0xb68,0xb76,0xb78,0xb78,0xb78,0xb78,0xb78,0xb78, +0xb78,0xb78,0xb78,0xb78,0xb78,0xb78,0xb78,0xb78,0xb7d,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88, +0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb89,0xb98,0xb98,0xba2,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0xbb2,0xbb2,0xbc0,0x800,0x800,0x800,0x800,0x800,0xbd0, +0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0, +0xbd0,0xbd0,0xbdb,0xbe0,0xbe0,0xbe0,0xbe0,0xbe0,0xbe0,0xbe0,0xbe0,0xbe0,0xbe0,0xbe0,0xbe0,0xbe5, +0xbf0,0xbf0,0xbf0,0xbf0,0xbf0,0xbf0,0xbf0,0xbf0,0xbf0,0xbf0,0xbf0,0xbf0,0xbf0,0xbf0,0xbf0,0xbf0, +0xbf8,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08, +0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc08,0xc14,0x800,0x800, +0x800,0xc24,0xc34,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800,0x800, +0x800,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44, +0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44,0xc44, +0xc44,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54, +0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54, +0xc54,0x45,0x65,0x79,0x89,0x89,0xa9,0xb5,0xd5,0xf5,0x115,0x131,0x150,0x168,0x17a,0x197, +0x1b7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1f1,0x20a,0x21f,0x23f,0x25c,0x271,0x271,0x271,0x271,0x281, +0x291,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271, +0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x271, +0x271,0x2b1,0x271,0x271,0x271,0x271,0x271,0x271,0x271,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1,0x2d1, +0x2d1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1 }; -static const uint16_t block_trieData[3098]={ +static const uint16_t block_trieData[3175]={ 1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4, 4,4,4,4,4,5,5,5,5,5,5,6,6,6,6,6, @@ -4898,26 +4998,28 @@ static const uint16_t block_trieData[3098]={ 0x13e,0xf5,0xf5,0xf5,0xf5,0x144,0x144,0x144,0x144,0x144,0x144,0x156,0x156,0,0,0, 0,0x14f,0x14f,0x14f,0x14f,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x10c,0x10c,0x10c,0x10c, 0x10c,0,0,0,0,0x114,0x114,0x114,0x114,0x114,0x114,0x11c,0x11c,0x11c,0x11c,0x11c, -0x15a,0x15a,0x15a,0x15a,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x11f,0x11f,0x146,0x146,0x146,0x146,0x146,0x146,0,0,0,0,0,0x131, -0x12b,0x12b,0x12b,0x12b,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98, -0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x101,0x101,0x101,0x101, -0x101,0x101,0x101,0x101,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x136,0x136,0x136,0x136,0x136,0x136,0x136,0xc2,0xc2,0xc2,0xc2,0xc2, -0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0x124,0x124,0x124,0x149,0x149, -0x149,0x149,0x149,0x149,0x149,0x149,0x149,0x149,0x149,0x149,0x149,0x149,0x149,0x149,0xfe,0xfe, -0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0,0, -0,0,0,0,0,0,0x14b,0x14b,0x14b,0x14b,0,0,0,0,0,0, -0,0,0,0,0,0,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, -0xca,0xca,0xca,0xca,0xca,0xca,0xed,0xed,0xed,0x13c,0x13c,0x13c,0x13c,0x13c,0x13c,0xdd, -0xdd,0xdd,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0,0,0,0,0, -0,0,0x14c,0x14c,0x14c,0x14c,0,0,0,0,0,0,0,0,0x121,0x121, -0x121,0x121,0x121,0x121,0x153,0x153,0x153,0x153,0,0,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8, -0xd8,0xd8,0xd8,0xd8,0,0,0,0,0x10b,0x10b,0x110,0x110,0x110,0x110,0x110,0x110, -0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x111,0x111,0x111,0x111,0x111,0x111, -0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x130,0x130,0x130,0x130,0x130,0x130, -0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x133,0x133,0x133,0x133,0x133,0x133, -0x133,0x133,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0,0,0,0,0,0, +0x15a,0x15a,0x15a,0x15a,0x15c,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0x11f,0x11f,0x146,0x146,0x146,0x146,0x146,0x146,0,0,0,0,0, +0x131,0x12b,0x12b,0x12b,0x12b,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98, +0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x101,0x101,0x101, +0x101,0x101,0x101,0x101,0x101,0x15b,0x15b,0x15b,0x15b,0x15b,0x15b,0x15b,0x15b,0x15b,0x15b,0x15b, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x136,0x136,0x136,0x136,0x136,0x136,0x136,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2, +0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0x124,0x124,0x124,0x149,0x149,0x149,0x149,0x149,0x149, +0x149,0x149,0x149,0x149,0x149,0x149,0x149,0x149,0x149,0x149,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe, +0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0,0,0,0,0,0, +0,0,0x14b,0x14b,0x14b,0x14b,0,0,0,0,0,0,0,0,0,0, +0,0,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, +0xca,0xca,0xed,0xed,0xed,0x13c,0x13c,0x13c,0x13c,0x13c,0x13c,0xdd,0xdd,0xdd,0xf3,0xf3, +0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0,0,0,0,0,0,0,0x14c,0x14c, +0x14c,0x14c,0,0,0,0,0,0,0,0,0x121,0x121,0x121,0x121,0x121,0x121, +0x153,0x153,0x153,0x153,0,0,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8, +0,0,0,0,0x10b,0x10b,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110, +0x110,0x110,0x110,0x110,0x110,0x110,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111, +0x111,0x111,0x111,0x111,0x111,0x111,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130, +0x130,0x130,0x130,0x130,0x130,0x130,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x159,0x159, +0x159,0x159,0x159,0x159,0x159,0x159,0x15d,0x15d,0x15d,0x15d,0x15d,0x15d,0x15d,0x15d,0x15d,0x15d, +0x15d,0x15d,0x15d,0x15d,0x15d,0x15d,0x15e,0x15e,0x15e,0x15e,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0x138,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb, 0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0x113,0x113,0x113,0x129,0x129,0x129, 0x129,0x115,0x115,0x115,0x115,0x115,0x115,0x115,0x115,0x115,0x115,0x115,0x115,0x115,0x115,0x115, @@ -4926,11 +5028,12 @@ static const uint16_t block_trieData[3098]={ 0x150,0x155,0x155,0x155,0x155,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140, 0x140,0x140,0,0,0,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b, 0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c, -0x5c,0x5c,0x5c,0x5c,0x5c,0x7e,0x7e,0x7e,0x7e,0x7e,0,0,0,0,0,0, +0x5c,0x5c,0x5c,0x5c,0x5c,0x7e,0x7e,0x7e,0x7e,0x7e,0x160,0x160,0x160,0x160,0,0, 0,0x145,0x145,0x120,0x120,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x9a,0x9a,0,0,0, 0,0,0,0,0,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d, 0x5d,0x5d,0x5d,0x5d,0x5d,0x106,0x106,0x106,0x106,0x106,0x106,0x106,0x106,0x106,0x106,0x106, -0x106,0x106,0x106,0x106,0x106,0,0,0,0,0,0x13a,0x13a,0x13a,0x13a,0x13a,0x13a, +0x106,0x106,0x106,0x106,0x106,0,0,0,0,0,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f, +0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x13a,0x13a,0x13a,0x13a,0x13a,0x13a, 0x13a,0x13a,0x13a,0x13a,0x13a,0x13a,0x13a,0x13a,0x13a,0x13a,0x10a,0x10a,0x10a,0x143,0x143,0x143, 0x143,0x143,0x143,0,0,0,0,0,0,0,0x127,0x127,0x127,0x127,0x127,0, 0,0,0,0,0,0,0,0,0,0,0x13d,0x13d,0x13d,0x12c,0x12c,0x12c, @@ -4964,24 +5067,26 @@ static const uint16_t block_trieData[3098]={ 0x12e,0x12e,0x12e,0x12e,0x12e,0x12e,0x12e,0x12e,0x12e,0x12e,0x12e,0x12e,0x12e,0x12e,0x12e,0x12e, 0x142,0x142,0x142,0x142,0x142,0x142,0x142,0x142,0x142,0x142,0x142,0x142,0x142,0x142,0x142,0x142, 0x154,0x154,0x154,0x154,0x154,0x154,0x154,0x154,0x154,0x154,0x154,0x154,0x154,0x154,0x154,0x154, -0,0,0,0,0,0,0,0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, -0,0,0,0,0,0,0,0,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d, -0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d, -0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e, -0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0,0 +0,0,0,0,0,0,0,0,0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x161, +0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x161,0,0,0,0,0,0,0,0, +0,0,0,0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0,0,0,0, +0,0,0,0,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d, +0x7d,0x7d,0x7d,0,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d, +0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e, +0x6e,0x6e,0x6e,0x6e,0,0,0 }; static const UCPTrie block_trie={ block_trieIndex, { block_trieData }, - 834, 3098, + 873, 3175, 0x11000, 0x11, 1, 0, 0, 0, - 0x270, 0x7f4, + 0x271, 0x800, 0x0, }; -static const int32_t indexes[UPROPS_INDEX_COUNT]={0x2f2a,0x2f2a,0x2f2a,0x2f2a,0x836c,3,0x9e09,0x9f22,0xa6d4,0xa6d4,0x50d4,0x3075a31,0x15a,0,0,0}; +static const int32_t indexes[UPROPS_INDEX_COUNT]={0x3068,0x3068,0x3068,0x3068,0x8618,3,0xa16c,0xa28a,0xaa76,0xaa76,0x1d0d6,0x3075a31,0x161,0,0,0}; #endif // INCLUDED_FROM_UCHAR_C diff --git a/deps/icu-small/source/common/ucharstrie.cpp b/deps/icu-small/source/common/ucharstrie.cpp index 4c48323c9176..d0a4516319fb 100644 --- a/deps/icu-small/source/common/ucharstrie.cpp +++ b/deps/icu-small/source/common/ucharstrie.cpp @@ -282,9 +282,11 @@ UCharsTrie::next(ConstChar16Ptr ptr, int32_t sLength) { } } -const char16_t * -UCharsTrie::findUniqueValueFromBranch(const char16_t *pos, int32_t length, - UBool haveUniqueValue, int32_t &uniqueValue) { +const char16_t* +UCharsTrie::findUniqueValueFromBranch(const char16_t* pos U_LIFETIME_BOUND, + int32_t length, + UBool haveUniqueValue, + int32_t& uniqueValue) { while(length>kMaxBranchLinearSubNodeLength) { ++pos; // ignore the comparison unit if(nullptr==findUniqueValueFromBranch(jumpByDelta(pos), length>>1, haveUniqueValue, uniqueValue)) { diff --git a/deps/icu-small/source/common/ucharstriebuilder.cpp b/deps/icu-small/source/common/ucharstriebuilder.cpp index bf3216bd1bc0..dcdf9c3c99ca 100644 --- a/deps/icu-small/source/common/ucharstriebuilder.cpp +++ b/deps/icu-small/source/common/ucharstriebuilder.cpp @@ -39,7 +39,7 @@ class UCharsTrieElement : public UMemory { void setTo(const UnicodeString &s, int32_t val, UnicodeString &strings, UErrorCode &errorCode); - UnicodeString getString(const UnicodeString &strings) const { + UnicodeString getString(const UnicodeString& strings U_LIFETIME_BOUND) const { int32_t length=strings[stringOffset]; return strings.tempSubString(stringOffset+1, length); } @@ -94,8 +94,10 @@ UCharsTrieBuilder::~UCharsTrieBuilder() { uprv_free(uchars); } -UCharsTrieBuilder & -UCharsTrieBuilder::add(const UnicodeString &s, int32_t value, UErrorCode &errorCode) { +UCharsTrieBuilder& +UCharsTrieBuilder::add(const UnicodeString& s, + int32_t value, + UErrorCode& errorCode) U_LIFETIME_BOUND { if(U_FAILURE(errorCode)) { return *this; } @@ -158,9 +160,10 @@ UCharsTrieBuilder::build(UStringTrieBuildOption buildOption, UErrorCode &errorCo return newTrie; } -UnicodeString & -UCharsTrieBuilder::buildUnicodeString(UStringTrieBuildOption buildOption, UnicodeString &result, - UErrorCode &errorCode) { +UnicodeString& +UCharsTrieBuilder::buildUnicodeString(UStringTrieBuildOption buildOption, + UnicodeString& result U_LIFETIME_BOUND, + UErrorCode& errorCode) U_LIFETIME_BOUND { buildUChars(buildOption, errorCode); if(U_SUCCESS(errorCode)) { result.setTo(false, uchars+(ucharsCapacity-ucharsLength), ucharsLength); diff --git a/deps/icu-small/source/common/ucharstrieiterator.cpp b/deps/icu-small/source/common/ucharstrieiterator.cpp index 8a212b8b36da..8a400c7db8d2 100644 --- a/deps/icu-small/source/common/ucharstrieiterator.cpp +++ b/deps/icu-small/source/common/ucharstrieiterator.cpp @@ -21,7 +21,7 @@ U_NAMESPACE_BEGIN -UCharsTrie::Iterator::Iterator(ConstChar16Ptr trieUChars, int32_t maxStringLength, +UCharsTrie::Iterator::Iterator(ConstChar16Ptr trieUChars U_LIFETIME_BOUND, int32_t maxStringLength, UErrorCode &errorCode) : uchars_(trieUChars), pos_(uchars_), initialPos_(uchars_), @@ -78,8 +78,8 @@ UCharsTrie::Iterator::~Iterator() { delete stack_; } -UCharsTrie::Iterator & -UCharsTrie::Iterator::reset() { +UCharsTrie::Iterator& +UCharsTrie::Iterator::reset() U_LIFETIME_BOUND { pos_=initialPos_; remainingMatchLength_=initialRemainingMatchLength_; skipValue_=false; @@ -182,8 +182,10 @@ UCharsTrie::Iterator::next(UErrorCode &errorCode) { } // Branch node, needs to take the first outbound edge and push state for the rest. -const char16_t * -UCharsTrie::Iterator::branchNext(const char16_t *pos, int32_t length, UErrorCode &errorCode) { +const char16_t* +UCharsTrie::Iterator::branchNext(const char16_t* pos U_LIFETIME_BOUND, + int32_t length, + UErrorCode& errorCode) { while(length>kMaxBranchLinearSubNodeLength) { ++pos; // ignore the comparison unit // Push state for the greater-or-equal edge. diff --git a/deps/icu-small/source/common/uchriter.cpp b/deps/icu-small/source/common/uchriter.cpp index 903eb46c3b34..8e09b0a0cf12 100644 --- a/deps/icu-small/source/common/uchriter.cpp +++ b/deps/icu-small/source/common/uchriter.cpp @@ -25,14 +25,14 @@ UCharCharacterIterator::UCharCharacterIterator() // never default construct! } -UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr, +UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr U_LIFETIME_BOUND, int32_t length) : CharacterIterator(textPtr != nullptr ? (length >= 0 ? length : u_strlen(textPtr)) : 0), text(textPtr) { } -UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr, +UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr U_LIFETIME_BOUND, int32_t length, int32_t position) : CharacterIterator(textPtr != nullptr ? (length >= 0 ? length : u_strlen(textPtr)) : 0, position), @@ -40,7 +40,7 @@ UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr, { } -UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr, +UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr U_LIFETIME_BOUND, int32_t length, int32_t textBegin, int32_t textEnd, @@ -58,7 +58,7 @@ UCharCharacterIterator::UCharCharacterIterator(const UCharCharacterIterator& tha } UCharCharacterIterator& -UCharCharacterIterator::operator=(const UCharCharacterIterator& that) { +UCharCharacterIterator::operator=(const UCharCharacterIterator& that) U_LIFETIME_BOUND { CharacterIterator::operator=(that); text = that.text; return *this; diff --git a/deps/icu-small/source/common/ucnv.cpp b/deps/icu-small/source/common/ucnv.cpp index c7926d2ea717..d9a1edaf3305 100644 --- a/deps/icu-small/source/common/ucnv.cpp +++ b/deps/icu-small/source/common/ucnv.cpp @@ -155,7 +155,10 @@ and created from a converter that is shared across threads. */ U_CAPI UConverter* U_EXPORT2 -ucnv_safeClone(const UConverter* cnv, void *stackBuffer, int32_t *pBufferSize, UErrorCode *status) +ucnv_safeClone(const UConverter* cnv, + void* stackBuffer U_LIFETIME_BOUND, + int32_t* pBufferSize, + UErrorCode* status) { UConverter *localConverter, *allocatedConverter; int32_t stackBufferSize; @@ -660,9 +663,8 @@ ucnv_getMinCharSize (const UConverter * converter) return converter->sharedData->staticData->minBytesPerChar; } -U_CAPI const char* U_EXPORT2 -ucnv_getName (const UConverter * converter, UErrorCode * err) - +U_CAPI const char* U_EXPORT2 +ucnv_getName(const UConverter* converter U_LIFETIME_BOUND, UErrorCode* err) { if (U_FAILURE (*err)) return nullptr; @@ -877,6 +879,10 @@ _fromUnicodeWithCallback(UConverterFromUnicodeArgs *pArgs, UErrorCode *err) { * and failed to consume all of them. * We need to "replay" them from a temporary buffer and convert them first. */ + if (!pArgs->source) { + *err=U_ILLEGAL_ARGUMENT_ERROR; + return; + } realSource=pArgs->source; realSourceLimit=pArgs->sourceLimit; realFlush=pArgs->flush; @@ -1322,6 +1328,10 @@ _toUnicodeWithCallback(UConverterToUnicodeArgs *pArgs, UErrorCode *err) { * and failed to consume all of them. * We need to "replay" them from a temporary buffer and convert them first. */ + if (!pArgs->source) { + *err=U_ILLEGAL_ARGUMENT_ERROR; + return; + } realSource=pArgs->source; realSourceLimit=pArgs->sourceLimit; realFlush=pArgs->flush; diff --git a/deps/icu-small/source/common/ucnv_bld.cpp b/deps/icu-small/source/common/ucnv_bld.cpp index 1e768ae22411..3bbe686590d3 100644 --- a/deps/icu-small/source/common/ucnv_bld.cpp +++ b/deps/icu-small/source/common/ucnv_bld.cpp @@ -824,8 +824,10 @@ ucnv_loadSharedData(const char *converterName, return mySharedConverterData; } -U_CAPI UConverter * -ucnv_createConverter(UConverter *myUConverter, const char *converterName, UErrorCode * err) +U_CAPI UConverter* +ucnv_createConverter(UConverter* myUConverter U_LIFETIME_BOUND, + const char* converterName, + UErrorCode* err) { UConverterNamePieces stackPieces; UConverterLoadArgs stackArgs=UCNV_LOAD_ARGS_INITIALIZER; @@ -879,11 +881,12 @@ ucnv_canCreateConverter(const char *converterName, UErrorCode *err) { return U_SUCCESS(*err); } -UConverter * -ucnv_createAlgorithmicConverter(UConverter *myUConverter, +UConverter* +ucnv_createAlgorithmicConverter(UConverter* myUConverter U_LIFETIME_BOUND, UConverterType type, - const char *locale, uint32_t options, - UErrorCode *err) { + const char* locale, + uint32_t options, + UErrorCode* err) { UConverter *cnv; const UConverterSharedData *sharedData; UConverterLoadArgs stackArgs=UCNV_LOAD_ARGS_INITIALIZER; @@ -969,10 +972,10 @@ ucnv_createConverterFromPackage(const char *packageName, const char *converterNa U_CFUNC UConverter* -ucnv_createConverterFromSharedData(UConverter *myUConverter, - UConverterSharedData *mySharedConverterData, - UConverterLoadArgs *pArgs, - UErrorCode *err) +ucnv_createConverterFromSharedData(UConverter* myUConverter U_LIFETIME_BOUND, + UConverterSharedData* mySharedConverterData, + UConverterLoadArgs* pArgs, + UErrorCode* err) { UBool isCopyLocal; diff --git a/deps/icu-small/source/common/ucnv_imp.h b/deps/icu-small/source/common/ucnv_imp.h index cb939911e47e..4543c78f5201 100644 --- a/deps/icu-small/source/common/ucnv_imp.h +++ b/deps/icu-small/source/common/ucnv_imp.h @@ -58,8 +58,10 @@ ucnv_canCreateConverter(const char *converterName, UErrorCode *err); * @param err The error code * @return the newly created converter */ -U_CAPI UConverter * -ucnv_createConverter(UConverter *myUConverter, const char *converterName, UErrorCode * err); +U_CAPI UConverter* +ucnv_createConverter(UConverter* myUConverter U_LIFETIME_BOUND, + const char* converterName, + UErrorCode* err); /* * Open a purely algorithmic converter, specified by a type constant. @@ -72,11 +74,12 @@ ucnv_createConverter(UConverter *myUConverter, const char *converterName, UError * because this is an internal function * @internal */ -U_CFUNC UConverter * -ucnv_createAlgorithmicConverter(UConverter *myUConverter, +U_CFUNC UConverter* +ucnv_createAlgorithmicConverter(UConverter* myUConverter U_LIFETIME_BOUND, UConverterType type, - const char *locale, uint32_t options, - UErrorCode *err); + const char* locale, + uint32_t options, + UErrorCode* err); /* * Creates a converter from shared data. @@ -84,11 +87,11 @@ ucnv_createAlgorithmicConverter(UConverter *myUConverter, * unload mySharedConverterData, except via ucnv_close(return value) * if this function is successful. */ -U_CFUNC UConverter * -ucnv_createConverterFromSharedData(UConverter *myUConverter, - UConverterSharedData *mySharedConverterData, - UConverterLoadArgs *pArgs, - UErrorCode *err); +U_CFUNC UConverter* +ucnv_createConverterFromSharedData(UConverter* myUConverter U_LIFETIME_BOUND, + UConverterSharedData* mySharedConverterData, + UConverterLoadArgs* pArgs, + UErrorCode* err); U_CFUNC UConverter * ucnv_createConverterFromPackage(const char *packageName, const char *converterName, UErrorCode *err); diff --git a/deps/icu-small/source/common/ucnv_io.cpp b/deps/icu-small/source/common/ucnv_io.cpp index 46a26f821fd8..76046f0632ce 100644 --- a/deps/icu-small/source/common/ucnv_io.cpp +++ b/deps/icu-small/source/common/ucnv_io.cpp @@ -249,14 +249,15 @@ static void U_CALLCONV initAliasData(UErrorCode &errCode) { sectionSizes = static_cast(udata_getMemory(data)); int32_t dataLength = udata_getLength(data); // This is the length minus the UDataInfo size - if (dataLength <= int32_t(sizeof(sectionSizes[0]))) { + UBool isDataLengthKnown = dataLength >= 0; // Only false when using a pointer table of contents (not files nor a common data archive) + if (isDataLengthKnown && dataLength <= int32_t(sizeof(sectionSizes[0]))) { // We don't even have a TOC! goto invalidFormat; } table = reinterpret_cast(sectionSizes); tableStart = sectionSizes[0]; sizeOfTOC = int32_t((tableStart + 1) * sizeof(sectionSizes[0])); - if (tableStart < minTocLength || dataLength <= sizeOfTOC) { + if (tableStart < minTocLength || (isDataLengthKnown && dataLength <= sizeOfTOC)) { // We don't have a whole TOC! goto invalidFormat; } @@ -279,7 +280,7 @@ static void U_CALLCONV initAliasData(UErrorCode &errCode) { for (uint32_t section = 1; section <= tableStart; section++) { sizeOfData += sectionSizes[section] * sizeof(table[0]); } - if (dataLength < sizeOfData) { + if (isDataLengthKnown && dataLength < sizeOfData) { // Truncated file! goto invalidFormat; } @@ -406,8 +407,8 @@ static const uint8_t ebcdicTypes[128] = { /* @see ucnv_compareNames */ -U_CAPI char * U_CALLCONV -ucnv_io_stripASCIIForCompare(char *dst, const char *name) { +U_CAPI char* U_CALLCONV +ucnv_io_stripASCIIForCompare(char* dst U_LIFETIME_BOUND, const char* name) { char *dstItr = dst; uint8_t type, nextType; char c1; @@ -441,8 +442,8 @@ ucnv_io_stripASCIIForCompare(char *dst, const char *name) { return dst; } -U_CAPI char * U_CALLCONV -ucnv_io_stripEBCDICForCompare(char *dst, const char *name) { +U_CAPI char* U_CALLCONV +ucnv_io_stripEBCDICForCompare(char* dst U_LIFETIME_BOUND, const char* name) { char *dstItr = dst; uint8_t type, nextType; char c1; diff --git a/deps/icu-small/source/common/ucnv_io.h b/deps/icu-small/source/common/ucnv_io.h index 8f2d7b5a02bb..a88a30d10547 100644 --- a/deps/icu-small/source/common/ucnv_io.h +++ b/deps/icu-small/source/common/ucnv_io.h @@ -77,11 +77,11 @@ typedef struct UConverterAlias { # error U_CHARSET_FAMILY is not valid #endif -U_CAPI char * U_CALLCONV -ucnv_io_stripASCIIForCompare(char *dst, const char *name); +U_CAPI char* U_CALLCONV +ucnv_io_stripASCIIForCompare(char* dst U_LIFETIME_BOUND, const char* name); -U_CAPI char * U_CALLCONV -ucnv_io_stripEBCDICForCompare(char *dst, const char *name); +U_CAPI char* U_CALLCONV +ucnv_io_stripEBCDICForCompare(char* dst U_LIFETIME_BOUND, const char* name); /** * Map a converter alias name to a canonical converter name. diff --git a/deps/icu-small/source/common/ucnvsel.cpp b/deps/icu-small/source/common/ucnvsel.cpp index 01d9c7e0c210..124f9ab3c4b3 100644 --- a/deps/icu-small/source/common/ucnvsel.cpp +++ b/deps/icu-small/source/common/ucnvsel.cpp @@ -463,7 +463,9 @@ ucnvsel_swap(const UDataSwapper *ds, /* unserialize a selector */ U_CAPI UConverterSelector* U_EXPORT2 -ucnvsel_openFromSerialized(const void* buffer, int32_t length, UErrorCode* status) { +ucnvsel_openFromSerialized(const void* buffer U_LIFETIME_BOUND, + int32_t length, + UErrorCode* status) { // check if already failed if (U_FAILURE(*status)) { return nullptr; @@ -690,8 +692,10 @@ static int16_t countOnes(uint32_t* mask, int32_t len) { /* internal function! */ -static UEnumeration *selectForMask(const UConverterSelector* sel, - uint32_t *theMask, UErrorCode *status) { +static UEnumeration* +selectForMask(const UConverterSelector* sel U_LIFETIME_BOUND, + uint32_t* theMask, + UErrorCode* status) { LocalMemory mask(theMask); // this is the context we will use. Store a table of indices to which // encodings are legit. @@ -739,9 +743,11 @@ static UEnumeration *selectForMask(const UConverterSelector* sel, } /* check a string against the selector - UTF16 version */ -U_CAPI UEnumeration * U_EXPORT2 -ucnvsel_selectForString(const UConverterSelector* sel, - const char16_t *s, int32_t length, UErrorCode *status) { +U_CAPI UEnumeration* U_EXPORT2 +ucnvsel_selectForString(const UConverterSelector* sel U_LIFETIME_BOUND, + const char16_t* s, + int32_t length, + UErrorCode* status) { // check if already failed if (U_FAILURE(*status)) { return nullptr; @@ -781,9 +787,11 @@ ucnvsel_selectForString(const UConverterSelector* sel, } /* check a string against the selector - UTF8 version */ -U_CAPI UEnumeration * U_EXPORT2 -ucnvsel_selectForUTF8(const UConverterSelector* sel, - const char *s, int32_t length, UErrorCode *status) { +U_CAPI UEnumeration* U_EXPORT2 +ucnvsel_selectForUTF8(const UConverterSelector* sel U_LIFETIME_BOUND, + const char* s, + int32_t length, + UErrorCode* status) { // check if already failed if (U_FAILURE(*status)) { return nullptr; diff --git a/deps/icu-small/source/common/ucptrie.cpp b/deps/icu-small/source/common/ucptrie.cpp index 3e4b6a606e5e..0ff3dd537365 100644 --- a/deps/icu-small/source/common/ucptrie.cpp +++ b/deps/icu-small/source/common/ucptrie.cpp @@ -18,10 +18,13 @@ #include "uassert.h" #include "ucptrie_impl.h" -U_CAPI UCPTrie * U_EXPORT2 -ucptrie_openFromBinary(UCPTrieType type, UCPTrieValueWidth valueWidth, - const void *data, int32_t length, int32_t *pActualLength, - UErrorCode *pErrorCode) { +U_CAPI UCPTrie* U_EXPORT2 +ucptrie_openFromBinary(UCPTrieType type, + UCPTrieValueWidth valueWidth, + const void* data U_LIFETIME_BOUND, + int32_t length, + int32_t* pActualLength, + UErrorCode* pErrorCode) { if (U_FAILURE(*pErrorCode)) { return nullptr; } diff --git a/deps/icu-small/source/common/ucurr.cpp b/deps/icu-small/source/common/ucurr.cpp index cccf1130ae8e..3ab4d22c1499 100644 --- a/deps/icu-small/source/common/ucurr.cpp +++ b/deps/icu-small/source/common/ucurr.cpp @@ -521,7 +521,7 @@ ucurr_forLocale(const char* locale, return u_terminateUChars(buff, buffCapacity, resLen, ec); } - // get country or country_variant in `id' + // get country or country_variant in `id` CharString id = idForLocale(locale, ec); if (U_FAILURE(*ec)) { return 0; @@ -637,7 +637,7 @@ static UBool fallback(CharString& loc) { U_CAPI const char16_t* U_EXPORT2 -ucurr_getName(const char16_t* currency, +ucurr_getName(const char16_t* currency U_LIFETIME_BOUND, const char* locale, UCurrNameStyle nameStyle, UBool* isChoiceFormat, // fillin @@ -754,7 +754,7 @@ ucurr_getName(const char16_t* currency, } U_CAPI const char16_t* U_EXPORT2 -ucurr_getPluralName(const char16_t* currency, +ucurr_getPluralName(const char16_t* currency U_LIFETIME_BOUND, const char* locale, UBool* isChoiceFormat, const char* pluralCount, @@ -1434,6 +1434,12 @@ getCacheEntry(const char* locale, UErrorCode& ec) { CurrencyNameStruct* currencySymbols = nullptr; CurrencyNameCacheEntry* cacheEntry = nullptr; + // The cache key is stored in a fixed-size buffer. + if (uprv_strlen(locale) >= ULOC_FULLNAME_CAPACITY) { + ec = U_ILLEGAL_ARGUMENT_ERROR; + return nullptr; + } + umtx_lock(&gCurrencyCacheMutex); // in order to handle racing correctly, // not putting 'search' in a separate function. @@ -2291,7 +2297,7 @@ ucurr_countCurrencies(const char* locale, // local variables UErrorCode localStatus = U_ZERO_ERROR; - // get country or country_variant in `id' + // get country or country_variant in `id` CharString id = idForLocale(locale, ec); if (U_FAILURE(*ec)) @@ -2395,7 +2401,7 @@ ucurr_forLocaleAndDate(const char* locale, // local variables UErrorCode localStatus = U_ZERO_ERROR; - // get country or country_variant in `id' + // get country or country_variant in `id` CharString id = idForLocale(locale, ec); if (U_FAILURE(*ec)) { diff --git a/deps/icu-small/source/common/udata.cpp b/deps/icu-small/source/common/udata.cpp index b9b737f177ed..03f76fa3a854 100644 --- a/deps/icu-small/source/common/udata.cpp +++ b/deps/icu-small/source/common/udata.cpp @@ -1270,7 +1270,7 @@ doOpenChoice(const char *path, const char *type, const char *name, #ifdef UDATA_DEBUG fprintf(stderr, " tocEntryName = %s\n", tocEntryName.data()); - fprintf(stderr, " tocEntryPath = %s\n", tocEntryName.data()); + fprintf(stderr, " tocEntryPath = %s\n", tocEntryPath.data()); #endif #if !defined(ICU_DATA_DIR_WINDOWS) @@ -1291,7 +1291,7 @@ doOpenChoice(const char *path, const char *type, const char *name, dataPath = u_getDataDirectory(); /**** Time zone individual files override */ - if (isICUData && isTimeZoneFile(name, type)) { + if (isICUData && type != nullptr && isTimeZoneFile(name, type)) { const char *tzFilesDir = u_getTimeZoneFilesDirectory(pErrorCode); if (tzFilesDir[0] != 0) { #ifdef UDATA_DEBUG diff --git a/deps/icu-small/source/common/udatamem.cpp b/deps/icu-small/source/common/udatamem.cpp index 02be852320d4..6ea1b043fde7 100644 --- a/deps/icu-small/source/common/udatamem.cpp +++ b/deps/icu-small/source/common/udatamem.cpp @@ -54,9 +54,8 @@ U_CFUNC UDataMemory *UDataMemory_createNewInstance(UErrorCode *pErr) { return This; } - -U_CFUNC const DataHeader * -UDataMemory_normalizeDataPointer(const void *p) { +U_CFUNC const DataHeader* +UDataMemory_normalizeDataPointer(const void* p U_LIFETIME_BOUND) { /* allow the data to be optionally prepended with an alignment-forcing double value */ const DataHeader *pdh = (const DataHeader *)p; if(pdh==nullptr || (pdh->dataHeader.magic1==0xda && pdh->dataHeader.magic2==0x27)) { @@ -100,8 +99,8 @@ udata_close(UDataMemory *pData) { } } -U_CAPI const void * U_EXPORT2 -udata_getMemory(UDataMemory *pData) { +U_CAPI const void* U_EXPORT2 +udata_getMemory(UDataMemory* pData U_LIFETIME_BOUND) { if(pData!=nullptr && pData->pHeader!=nullptr) { return (char *)(pData->pHeader)+udata_getHeaderSize(pData->pHeader); } else { @@ -147,8 +146,8 @@ udata_getLength(const UDataMemory *pData) { * Used in cintltst/udatatst.c * @internal */ -U_CAPI const void * U_EXPORT2 -udata_getRawMemory(const UDataMemory *pData) { +U_CAPI const void* U_EXPORT2 +udata_getRawMemory(const UDataMemory* pData U_LIFETIME_BOUND) { if(pData!=nullptr && pData->pHeader!=nullptr) { return pData->pHeader; } else { diff --git a/deps/icu-small/source/common/udatamem.h b/deps/icu-small/source/common/udatamem.h index 3db2af43aad2..436c1fd1bc10 100644 --- a/deps/icu-small/source/common/udatamem.h +++ b/deps/icu-small/source/common/udatamem.h @@ -50,12 +50,12 @@ U_CFUNC void UDataMemory_init (UDataMemory *This); U_CFUNC UBool UDataMemory_isLoaded(const UDataMemory *This); U_CFUNC void UDataMemory_setData (UDataMemory *This, const void *dataAddr); -U_CFUNC const DataHeader *UDataMemory_normalizeDataPointer(const void *p); +U_CFUNC const DataHeader* UDataMemory_normalizeDataPointer(const void* p U_LIFETIME_BOUND); U_CAPI int32_t U_EXPORT2 udata_getLength(const UDataMemory *pData); -U_CAPI const void * U_EXPORT2 -udata_getRawMemory(const UDataMemory *pData); +U_CAPI const void* U_EXPORT2 +udata_getRawMemory(const UDataMemory* pData U_LIFETIME_BOUND); #endif diff --git a/deps/icu-small/source/common/uenum.cpp b/deps/icu-small/source/common/uenum.cpp index b4a5071ae7bc..2dc2bc0c4d40 100644 --- a/deps/icu-small/source/common/uenum.cpp +++ b/deps/icu-small/source/common/uenum.cpp @@ -31,7 +31,7 @@ static const int32_t PAD = 8; /* Return a pointer to the baseContext buffer, possibly allocating or reallocating it if at least 'capacity' bytes are not available. */ -static void* _getBuffer(UEnumeration* en, int32_t capacity) { +static void* _getBuffer(UEnumeration* en U_LIFETIME_BOUND, int32_t capacity) { if (en->baseContext != nullptr) { if (static_cast<_UEnumBuffer*>(en->baseContext)->len < capacity) { @@ -86,9 +86,9 @@ uenum_count(UEnumeration* en, UErrorCode* status) /* Don't call this directly. Only uenum_unext should be calling this. */ U_CAPI const char16_t* U_EXPORT2 -uenum_unextDefault(UEnumeration* en, - int32_t* resultLength, - UErrorCode* status) +uenum_unextDefault(UEnumeration* en U_LIFETIME_BOUND, + int32_t* resultLength, + UErrorCode* status) { char16_t *ustr = nullptr; int32_t len = 0; @@ -99,7 +99,8 @@ uenum_unextDefault(UEnumeration* en, if (ustr == nullptr) { *status = U_MEMORY_ALLOCATION_ERROR; } else { - u_charsToUChars(cstr, ustr, len+1); + u_charsToUChars(cstr, ustr, len); + ustr[len] = 0; } } } else { @@ -113,9 +114,9 @@ uenum_unextDefault(UEnumeration* en, /* Don't call this directly. Only uenum_next should be calling this. */ U_CAPI const char* U_EXPORT2 -uenum_nextDefault(UEnumeration* en, - int32_t* resultLength, - UErrorCode* status) +uenum_nextDefault(UEnumeration* en U_LIFETIME_BOUND, + int32_t* resultLength, + UErrorCode* status) { if (en->uNext != nullptr) { char *tempCharVal; @@ -129,7 +130,8 @@ uenum_nextDefault(UEnumeration* en, *status = U_MEMORY_ALLOCATION_ERROR; return nullptr; } - u_UCharsToChars(tempUCharVal, tempCharVal, *resultLength + 1); + u_UCharsToChars(tempUCharVal, tempCharVal, *resultLength); + tempCharVal[*resultLength] = 0; return tempCharVal; } else { *status = U_UNSUPPORTED_ERROR; @@ -138,7 +140,7 @@ uenum_nextDefault(UEnumeration* en, } U_CAPI const char16_t* U_EXPORT2 -uenum_unext(UEnumeration* en, +uenum_unext(UEnumeration* en U_LIFETIME_BOUND, int32_t* resultLength, UErrorCode* status) { @@ -154,9 +156,9 @@ uenum_unext(UEnumeration* en, } U_CAPI const char* U_EXPORT2 -uenum_next(UEnumeration* en, - int32_t* resultLength, - UErrorCode* status) +uenum_next(UEnumeration* en U_LIFETIME_BOUND, + int32_t* resultLength, + UErrorCode* status) { if (!en || U_FAILURE(*status)) { return nullptr; diff --git a/deps/icu-small/source/common/uenumimp.h b/deps/icu-small/source/common/uenumimp.h index 9c9df75ae049..5fe2e87cc9c6 100644 --- a/deps/icu-small/source/common/uenumimp.h +++ b/deps/icu-small/source/common/uenumimp.h @@ -137,9 +137,9 @@ U_CDECL_END * function. */ U_CAPI const UChar* U_EXPORT2 -uenum_unextDefault(UEnumeration* en, - int32_t* resultLength, - UErrorCode* status); +uenum_unextDefault(UEnumeration* en U_LIFETIME_BOUND, + int32_t* resultLength, + UErrorCode* status); /* This is the default implementation for uenum_next(). * It automatically converts the UChar * string to char *. @@ -148,8 +148,8 @@ uenum_unextDefault(UEnumeration* en, * function. */ U_CAPI const char* U_EXPORT2 -uenum_nextDefault(UEnumeration* en, - int32_t* resultLength, - UErrorCode* status); +uenum_nextDefault(UEnumeration* en U_LIFETIME_BOUND, + int32_t* resultLength, + UErrorCode* status); #endif diff --git a/deps/icu-small/source/common/uidna.cpp b/deps/icu-small/source/common/uidna.cpp index b47edefe1167..04c5c2e4cd7f 100644 --- a/deps/icu-small/source/common/uidna.cpp +++ b/deps/icu-small/source/common/uidna.cpp @@ -915,6 +915,7 @@ uidna_compare( const char16_t *s1, int32_t length1, if (U_FAILURE(bufferStatus)) { *status = bufferStatus; + goto CLEANUP; } // when toASCII is applied all label separators are replaced with FULL_STOP diff --git a/deps/icu-small/source/common/uloc.cpp b/deps/icu-small/source/common/uloc.cpp index 7467f1cb336f..4b853e5feefa 100644 --- a/deps/icu-small/source/common/uloc.cpp +++ b/deps/icu-small/source/common/uloc.cpp @@ -101,91 +101,55 @@ namespace { /* ISO639 table version is 20150505 */ /* Subsequent hand addition of selected languages */ constexpr const char* LANGUAGES[] = { - "aa", "ab", "ace", "ach", "ada", "ady", "ae", "aeb", - "af", "afh", "agq", "ain", "ak", "akk", "akz", "ale", - "aln", "alt", "am", "an", "ang", "anp", "ar", "arc", - "arn", "aro", "arp", "arq", "ars", "arw", "ary", "arz", "as", - "asa", "ase", "ast", "av", "avk", "awa", "ay", "az", - "ba", "bal", "ban", "bar", "bas", "bax", "bbc", "bbj", - "be", "bej", "bem", "bew", "bez", "bfd", "bfq", "bg", - "bgc", "bgn", "bho", "bi", "bik", "bin", "bjn", "bkm", "bla", - "blo", "bm", "bn", "bo", "bpy", "bqi", "br", "bra", "brh", - "brx", "bs", "bss", "bua", "bug", "bum", "byn", "byv", - "ca", "cad", "car", "cay", "cch", "ccp", "ce", "ceb", "cgg", - "ch", "chb", "chg", "chk", "chm", "chn", "cho", "chp", - "chr", "chy", "ckb", "co", "cop", "cps", "cr", "crh", - "cs", "csb", "csw", "cu", "cv", "cy", - "da", "dak", "dar", "dav", "de", "del", "den", "dgr", - "din", "dje", "doi", "dsb", "dtp", "dua", "dum", "dv", - "dyo", "dyu", "dz", "dzg", - "ebu", "ee", "efi", "egl", "egy", "eka", "el", "elx", - "en", "enm", "eo", "es", "esu", "et", "eu", "ewo", - "ext", - "fa", "fan", "fat", "ff", "fi", "fil", "fit", "fj", - "fo", "fon", "fr", "frc", "frm", "fro", "frp", "frr", - "frs", "fur", "fy", - "ga", "gaa", "gag", "gan", "gay", "gba", "gbz", "gd", - "gez", "gil", "gl", "glk", "gmh", "gn", "goh", "gom", - "gon", "gor", "got", "grb", "grc", "gsw", "gu", "guc", - "gur", "guz", "gv", "gwi", - "ha", "hai", "hak", "haw", "he", "hi", "hif", "hil", - "hit", "hmn", "ho", "hr", "hsb", "hsn", "ht", "hu", - "hup", "hy", "hz", - "ia", "iba", "ibb", "id", "ie", "ig", "ii", "ik", - "ilo", "inh", "io", "is", "it", "iu", "izh", - "ja", "jam", "jbo", "jgo", "jmc", "jpr", "jrb", "jut", - "jv", - "ka", "kaa", "kab", "kac", "kaj", "kam", "kaw", "kbd", - "kbl", "kcg", "kde", "kea", "ken", "kfo", "kg", "kgp", - "kha", "kho", "khq", "khw", "ki", "kiu", "kj", "kk", - "kkj", "kl", "kln", "km", "kmb", "kn", "ko", "koi", - "kok", "kos", "kpe", "kr", "krc", "kri", "krj", "krl", - "kru", "ks", "ksb", "ksf", "ksh", "ku", "kum", "kut", - "kv", "kw", "kxv", "ky", - "la", "lad", "lag", "lah", "lam", "lb", "lez", "lfn", - "lg", "li", "lij", "liv", "lkt", "lmo", "ln", "lo", - "lol", "loz", "lrc", "lt", "ltg", "lu", "lua", "lui", - "lun", "luo", "lus", "luy", "lv", "lzh", "lzz", - "mad", "maf", "mag", "mai", "mak", "man", "mas", "mde", - "mdf", "mdh", "mdr", "men", "mer", "mfe", "mg", "mga", - "mgh", "mgo", "mh", "mi", "mic", "min", "mis", "mk", - "ml", "mn", "mnc", "mni", - "moh", "mos", "mr", "mrj", - "ms", "mt", "mua", "mul", "mus", "mwl", "mwr", "mwv", - "my", "mye", "myv", "mzn", - "na", "nan", "nap", "naq", "nb", "nd", "nds", "ne", - "new", "ng", "nia", "niu", "njo", "nl", "nmg", "nn", - "nnh", "no", "nog", "non", "nov", "nqo", "nr", "nso", - "nus", "nv", "nwc", "ny", "nym", "nyn", "nyo", "nzi", - "oc", "oj", "om", "or", "os", "osa", "ota", - "pa", "pag", "pal", "pam", "pap", "pau", "pcd", "pcm", "pdc", - "pdt", "peo", "pfl", "phn", "pi", "pl", "pms", "pnt", - "pon", "prg", "pro", "ps", "pt", - "qu", "quc", "qug", - "raj", "rap", "rar", "rgn", "rif", "rm", "rn", "ro", - "rof", "rom", "rtm", "ru", "rue", "rug", "rup", - "rw", "rwk", - "sa", "sad", "sah", "sam", "saq", "sas", "sat", "saz", - "sba", "sbp", "sc", "scn", "sco", "sd", "sdc", "sdh", - "se", "see", "seh", "sei", "sel", "ses", "sg", "sga", - "sgs", "shi", "shn", "shu", "si", "sid", "sk", - "sl", "sli", "sly", "sm", "sma", "smj", "smn", "sms", - "sn", "snk", "so", "sog", "sq", "sr", "srn", "srr", - "ss", "ssy", "st", "stq", "su", "suk", "sus", "sux", - "sv", "sw", "swb", "syc", "syr", "szl", - "ta", "tcy", "te", "tem", "teo", "ter", "tet", "tg", - "th", "ti", "tig", "tiv", "tk", "tkl", "tkr", - "tlh", "tli", "tly", "tmh", "tn", "to", "tog", "tok", "tpi", - "tr", "tru", "trv", "ts", "tsd", "tsi", "tt", "ttt", - "tum", "tvl", "tw", "twq", "ty", "tyv", "tzm", - "udm", "ug", "uga", "uk", "umb", "und", "ur", "uz", - "vai", "ve", "vec", "vep", "vi", "vls", "vmf", "vmw", - "vo", "vot", "vro", "vun", - "wa", "wae", "wal", "war", "was", "wbp", "wo", "wuu", - "xal", "xh", "xmf", "xnr", "xog", - "yao", "yap", "yav", "ybb", "yi", "yo", "yrl", "yue", - "za", "zap", "zbl", "zea", "zen", "zgh", "zh", "zu", - "zun", "zxx", "zza", + "aa", "ab", "ace", "ach", "ada", "ady", "ae", "aeb", "af", "afh", "agq", "ain", "ak", "akk", + "akz", "ale", "aln", "alt", "am", "an", "ang", "anp", "ar", "arc", "arn", "aro", "arp", + "arq", "ars", "arw", "ary", "arz", "as", "asa", "ase", "ast", "av", "avk", "awa", "ay", + "az", "ba", "bal", "ban", "bar", "bas", "bax", "bbc", "bbj", "be", "bej", "bem", "bew", + "bez", "bfd", "bfq", "bg", "bgc", "bgn", "bho", "bi", "bik", "bin", "bjn", "bkm", "bla", + "blo", "bm", "bn", "bo", "bpy", "bqi", "br", "bra", "brh", "brx", "bs", "bss", "bua", "bug", + "bum", "byn", "byv", "ca", "cad", "car", "cay", "cch", "ccp", "ce", "ceb", "cgg", "ch", + "chb", "chg", "chk", "chm", "chn", "cho", "chp", "chr", "chy", "ckb", "co", "cop", "cps", + "cr", "crh", "cs", "csb", "csw", "cu", "cv", "cy", "da", "dak", "dar", "dav", "day", "de", + "del", "den", "dgr", "din", "dje", "doi", "dra", "dsb", "dtp", "dua", "dum", "dv", "dyo", + "dyu", "dz", "dzg", "ebu", "ee", "efi", "egl", "egy", "eka", "el", "elx", "en", "enm", "eo", + "es", "esu", "et", "eu", "ewo", "ext", "fa", "fan", "fat", "ff", "fi", "fil", "fit", "fiu", + "fj", "fo", "fon", "fr", "frc", "frm", "fro", "frp", "frr", "frs", "fur", "fy", "ga", "gaa", + "gag", "gan", "gay", "gba", "gbz", "gd", "gem", "gez", "gil", "gl", "glk", "gmh", "gn", + "goh", "gom", "gon", "gor", "got", "grb", "grc", "gsw", "gu", "guc", "gur", "guz", "gv", + "gwi", "ha", "hai", "hak", "haw", "he", "hi", "hif", "hil", "him", "hit", "hmn", "ho", "hr", + "hsb", "hsn", "ht", "hu", "hup", "hy", "hz", "ia", "iba", "ibb", "id", "ie", "ig", "ii", + "ijo", "ik", "ilo", "inc", "ine", "inh", "io", "ira", "iro", "is", "it", "iu", "izh", "ja", + "jam", "jbo", "jgo", "jmc", "jpr", "jrb", "jut", "jv", "ka", "kaa", "kab", "kac", "kaj", + "kam", "kar", "kaw", "kbd", "kbl", "kcg", "kde", "kea", "ken", "kfo", "kg", "kgp", "kha", + "khi", "kho", "khq", "khw", "ki", "kiu", "kj", "kk", "kkj", "kl", "kln", "km", "kmb", "kn", + "ko", "koi", "kok", "kos", "kpe", "kr", "krc", "kri", "krj", "krl", "kro", "kru", "ks", + "ksb", "ksf", "ksh", "ku", "kum", "kut", "kv", "kw", "kxv", "ky", "la", "lad", "lag", "lah", + "lam", "lb", "lez", "lfn", "lg", "li", "lij", "liv", "lkt", "lmo", "ln", "lo", "lol", "loz", + "lrc", "lt", "ltg", "lu", "lua", "lui", "lun", "luo", "lus", "luy", "lv", "lzh", "lzz", + "mad", "maf", "mag", "mai", "mak", "man", "map", "mas", "mde", "mdf", "mdh", "mdr", "men", + "mer", "mfe", "mg", "mga", "mgh", "mgo", "mh", "mi", "mic", "min", "mis", "mk", "mkh", "ml", + "mn", "mnc", "mni", "mno", "moh", "mos", "mr", "mrj", "ms", "mt", "mua", "mul", "mun", + "mus", "mwl", "mwr", "mwv", "my", "mye", "myn", "myv", "mzn", "na", "nah", "nai", "nan", + "nap", "naq", "nb", "nd", "nds", "ne", "new", "ng", "nia", "nic", "niu", "njo", "nl", "nmg", + "nn", "nnh", "no", "nog", "non", "nov", "nqo", "nr", "nso", "nub", "nus", "nv", "nwc", "ny", + "nym", "nyn", "nyo", "nzi", "oc", "oj", "om", "or", "os", "osa", "ota", "oto", "pa", "paa", + "pag", "pal", "pam", "pap", "pau", "pcd", "pcm", "pdc", "pdt", "peo", "pfl", "phi", "phn", + "pi", "pl", "pms", "pnt", "pon", "pra", "prg", "pro", "ps", "pt", "qu", "quc", "qug", "raj", + "rap", "rar", "rgn", "rif", "rm", "rn", "ro", "roa", "rof", "rom", "rtm", "ru", "rue", + "rug", "rup", "rw", "rwk", "sa", "sad", "sah", "sai", "sal", "sam", "saq", "sas", "sat", + "saz", "sba", "sbp", "sc", "scn", "sco", "sd", "sdc", "sdh", "se", "see", "seh", "sei", + "sel", "sem", "ses", "sg", "sga", "sgn", "sgs", "shi", "shn", "shu", "si", "sid", "sio", + "sit", "sk", "sl", "sla", "sli", "sly", "sm", "sma", "smi", "smj", "smn", "sms", "sn", + "snk", "so", "sog", "son", "sq", "sr", "srn", "srr", "ss", "ssa", "ssy", "st", "stq", "su", + "suk", "sus", "sux", "sv", "sw", "swb", "syc", "syr", "szl", "ta", "tai", "tcy", "te", + "tem", "teo", "ter", "tet", "tg", "th", "ti", "tig", "tiv", "tk", "tkl", "tkr", "tlh", + "tli", "tly", "tmh", "tn", "to", "tog", "tok", "tpi", "tr", "tru", "trv", "ts", "tsd", + "tsi", "tt", "ttt", "tum", "tup", "tut", "tvl", "tw", "twq", "ty", "tyv", "tzm", "udm", + "ug", "uga", "uk", "umb", "und", "ur", "uz", "vai", "ve", "vec", "vep", "vi", "vls", "vmf", + "vmw", "vo", "vot", "vro", "vun", "wa", "wae", "wak", "wal", "war", "was", "wbp", "wen", + "wo", "wuu", "xal", "xh", "xmf", "xnr", "xog", "yao", "yap", "yav", "ybb", "yi", "yo", + "ypk", "yrl", "yue", "za", "zap", "zbl", "zea", "zen", "zgh", "zh", "znd", "zu", "zun", + "zxx", "zza", nullptr, "in", "iw", "ji", "jw", "mo", "sh", "swc", "tl", /* obsolete language codes */ nullptr @@ -218,91 +182,56 @@ constexpr const char* REPLACEMENT_LANGUAGES[]={ /* ISO639 table version is 20150505 */ /* Subsequent hand addition of selected languages */ constexpr const char* LANGUAGES_3[] = { - "aar", "abk", "ace", "ach", "ada", "ady", "ave", "aeb", - "afr", "afh", "agq", "ain", "aka", "akk", "akz", "ale", - "aln", "alt", "amh", "arg", "ang", "anp", "ara", "arc", - "arn", "aro", "arp", "arq", "ars", "arw", "ary", "arz", "asm", - "asa", "ase", "ast", "ava", "avk", "awa", "aym", "aze", - "bak", "bal", "ban", "bar", "bas", "bax", "bbc", "bbj", - "bel", "bej", "bem", "bew", "bez", "bfd", "bfq", "bul", - "bgc", "bgn", "bho", "bis", "bik", "bin", "bjn", "bkm", "bla", - "blo", "bam", "ben", "bod", "bpy", "bqi", "bre", "bra", "brh", - "brx", "bos", "bss", "bua", "bug", "bum", "byn", "byv", - "cat", "cad", "car", "cay", "cch", "ccp", "che", "ceb", "cgg", - "cha", "chb", "chg", "chk", "chm", "chn", "cho", "chp", - "chr", "chy", "ckb", "cos", "cop", "cps", "cre", "crh", - "ces", "csb", "csw", "chu", "chv", "cym", - "dan", "dak", "dar", "dav", "deu", "del", "den", "dgr", - "din", "dje", "doi", "dsb", "dtp", "dua", "dum", "div", - "dyo", "dyu", "dzo", "dzg", - "ebu", "ewe", "efi", "egl", "egy", "eka", "ell", "elx", - "eng", "enm", "epo", "spa", "esu", "est", "eus", "ewo", - "ext", - "fas", "fan", "fat", "ful", "fin", "fil", "fit", "fij", - "fao", "fon", "fra", "frc", "frm", "fro", "frp", "frr", - "frs", "fur", "fry", - "gle", "gaa", "gag", "gan", "gay", "gba", "gbz", "gla", - "gez", "gil", "glg", "glk", "gmh", "grn", "goh", "gom", - "gon", "gor", "got", "grb", "grc", "gsw", "guj", "guc", - "gur", "guz", "glv", "gwi", - "hau", "hai", "hak", "haw", "heb", "hin", "hif", "hil", - "hit", "hmn", "hmo", "hrv", "hsb", "hsn", "hat", "hun", - "hup", "hye", "her", - "ina", "iba", "ibb", "ind", "ile", "ibo", "iii", "ipk", - "ilo", "inh", "ido", "isl", "ita", "iku", "izh", - "jpn", "jam", "jbo", "jgo", "jmc", "jpr", "jrb", "jut", - "jav", - "kat", "kaa", "kab", "kac", "kaj", "kam", "kaw", "kbd", - "kbl", "kcg", "kde", "kea", "ken", "kfo", "kon", "kgp", - "kha", "kho", "khq", "khw", "kik", "kiu", "kua", "kaz", - "kkj", "kal", "kln", "khm", "kmb", "kan", "kor", "koi", - "kok", "kos", "kpe", "kau", "krc", "kri", "krj", "krl", - "kru", "kas", "ksb", "ksf", "ksh", "kur", "kum", "kut", - "kom", "cor", "kxv", "kir", - "lat", "lad", "lag", "lah", "lam", "ltz", "lez", "lfn", - "lug", "lim", "lij", "liv", "lkt", "lmo", "lin", "lao", - "lol", "loz", "lrc", "lit", "ltg", "lub", "lua", "lui", - "lun", "luo", "lus", "luy", "lav", "lzh", "lzz", - "mad", "maf", "mag", "mai", "mak", "man", "mas", "mde", - "mdf", "mdh", "mdr", "men", "mer", "mfe", "mlg", "mga", - "mgh", "mgo", "mah", "mri", "mic", "min", "mis", "mkd", - "mal", "mon", "mnc", "mni", - "moh", "mos", "mar", "mrj", - "msa", "mlt", "mua", "mul", "mus", "mwl", "mwr", "mwv", - "mya", "mye", "myv", "mzn", - "nau", "nan", "nap", "naq", "nob", "nde", "nds", "nep", - "new", "ndo", "nia", "niu", "njo", "nld", "nmg", "nno", - "nnh", "nor", "nog", "non", "nov", "nqo", "nbl", "nso", - "nus", "nav", "nwc", "nya", "nym", "nyn", "nyo", "nzi", - "oci", "oji", "orm", "ori", "oss", "osa", "ota", - "pan", "pag", "pal", "pam", "pap", "pau", "pcd", "pcm", "pdc", - "pdt", "peo", "pfl", "phn", "pli", "pol", "pms", "pnt", - "pon", "prg", "pro", "pus", "por", - "que", "quc", "qug", - "raj", "rap", "rar", "rgn", "rif", "roh", "run", "ron", - "rof", "rom", "rtm", "rus", "rue", "rug", "rup", - "kin", "rwk", - "san", "sad", "sah", "sam", "saq", "sas", "sat", "saz", - "sba", "sbp", "srd", "scn", "sco", "snd", "sdc", "sdh", - "sme", "see", "seh", "sei", "sel", "ses", "sag", "sga", - "sgs", "shi", "shn", "shu", "sin", "sid", "slk", - "slv", "sli", "sly", "smo", "sma", "smj", "smn", "sms", - "sna", "snk", "som", "sog", "sqi", "srp", "srn", "srr", - "ssw", "ssy", "sot", "stq", "sun", "suk", "sus", "sux", - "swe", "swa", "swb", "syc", "syr", "szl", - "tam", "tcy", "tel", "tem", "teo", "ter", "tet", "tgk", - "tha", "tir", "tig", "tiv", "tuk", "tkl", "tkr", - "tlh", "tli", "tly", "tmh", "tsn", "ton", "tog", "tok", "tpi", - "tur", "tru", "trv", "tso", "tsd", "tsi", "tat", "ttt", - "tum", "tvl", "twi", "twq", "tah", "tyv", "tzm", - "udm", "uig", "uga", "ukr", "umb", "und", "urd", "uzb", - "vai", "ven", "vec", "vep", "vie", "vls", "vmf", "vmw", - "vol", "vot", "vro", "vun", - "wln", "wae", "wal", "war", "was", "wbp", "wol", "wuu", - "xal", "xho", "xmf", "xnr", "xog", - "yao", "yap", "yav", "ybb", "yid", "yor", "yrl", "yue", - "zha", "zap", "zbl", "zea", "zen", "zgh", "zho", "zul", - "zun", "zxx", "zza", + "aar", "abk", "ace", "ach", "ada", "ady", "ave", "aeb", "afr", "afh", "agq", "ain", "aka", + "akk", "akz", "ale", "aln", "alt", "amh", "arg", "ang", "anp", "ara", "arc", "arn", "aro", + "arp", "arq", "ars", "arw", "ary", "arz", "asm", "asa", "ase", "ast", "ava", "avk", "awa", + "aym", "aze", "bak", "bal", "ban", "bar", "bas", "bax", "bbc", "bbj", "bel", "bej", "bem", + "bew", "bez", "bfd", "bfq", "bul", "bgc", "bgn", "bho", "bis", "bik", "bin", "bjn", "bkm", + "bla", "blo", "bam", "ben", "bod", "bpy", "bqi", "bre", "bra", "brh", "brx", "bos", "bss", + "bua", "bug", "bum", "byn", "byv", "cat", "cad", "car", "cay", "cch", "ccp", "che", "ceb", + "cgg", "cha", "chb", "chg", "chk", "chm", "chn", "cho", "chp", "chr", "chy", "ckb", "cos", + "cop", "cps", "cre", "crh", "ces", "csb", "csw", "chu", "chv", "cym", "dan", "dak", "dar", + "dav", "day", "deu", "del", "den", "dgr", "din", "dje", "doi", "dra", "dsb", "dtp", "dua", + "dum", "div", "dyo", "dyu", "dzo", "dzg", "ebu", "ewe", "efi", "egl", "egy", "eka", "ell", + "elx", "eng", "enm", "epo", "spa", "esu", "est", "eus", "ewo", "ext", "fas", "fan", "fat", + "ful", "fin", "fil", "fit", "fiu", "fij", "fao", "fon", "fra", "frc", "frm", "fro", "frp", + "frr", "frs", "fur", "fry", "gle", "gaa", "gag", "gan", "gay", "gba", "gbz", "gla", "gem", + "gez", "gil", "glg", "glk", "gmh", "grn", "goh", "gom", "gon", "gor", "got", "grb", "grc", + "gsw", "guj", "guc", "gur", "guz", "glv", "gwi", "hau", "hai", "hak", "haw", "heb", "hin", + "hif", "hil", "him", "hit", "hmn", "hmo", "hrv", "hsb", "hsn", "hat", "hun", "hup", "hye", + "her", "ina", "iba", "ibb", "ind", "ile", "ibo", "iii", "ijo", "ipk", "ilo", "inc", "ine", + "inh", "ido", "ira", "iro", "isl", "ita", "iku", "izh", "jpn", "jam", "jbo", "jgo", "jmc", + "jpr", "jrb", "jut", "jav", "kat", "kaa", "kab", "kac", "kaj", "kam", "kar", "kaw", "kbd", + "kbl", "kcg", "kde", "kea", "ken", "kfo", "kon", "kgp", "kha", "khi", "kho", "khq", "khw", + "kik", "kiu", "kua", "kaz", "kkj", "kal", "kln", "khm", "kmb", "kan", "kor", "koi", "kok", + "kos", "kpe", "kau", "krc", "kri", "krj", "krl", "kro", "kru", "kas", "ksb", "ksf", "ksh", + "kur", "kum", "kut", "kom", "cor", "kxv", "kir", "lat", "lad", "lag", "lah", "lam", "ltz", + "lez", "lfn", "lug", "lim", "lij", "liv", "lkt", "lmo", "lin", "lao", "lol", "loz", "lrc", + "lit", "ltg", "lub", "lua", "lui", "lun", "luo", "lus", "luy", "lav", "lzh", "lzz", "mad", + "maf", "mag", "mai", "mak", "man", "map", "mas", "mde", "mdf", "mdh", "mdr", "men", "mer", + "mfe", "mlg", "mga", "mgh", "mgo", "mah", "mri", "mic", "min", "mis", "mkd", "mkh", "mal", + "mon", "mnc", "mni", "mno", "moh", "mos", "mar", "mrj", "msa", "mlt", "mua", "mul", "mun", + "mus", "mwl", "mwr", "mwv", "mya", "mye", "myn", "myv", "mzn", "nau", "nah", "nai", "nan", + "nap", "naq", "nob", "nde", "nds", "nep", "new", "ndo", "nia", "nic", "niu", "njo", "nld", + "nmg", "nno", "nnh", "nor", "nog", "non", "nov", "nqo", "nbl", "nso", "nub", "nus", "nav", + "nwc", "nya", "nym", "nyn", "nyo", "nzi", "oci", "oji", "orm", "ori", "oss", "osa", "ota", + "oto", "pan", "paa", "pag", "pal", "pam", "pap", "pau", "pcd", "pcm", "pdc", "pdt", "peo", + "pfl", "phi", "phn", "pli", "pol", "pms", "pnt", "pon", "pra", "prg", "pro", "pus", "por", + "que", "quc", "qug", "raj", "rap", "rar", "rgn", "rif", "roh", "run", "ron", "roa", "rof", + "rom", "rtm", "rus", "rue", "rug", "rup", "kin", "rwk", "san", "sad", "sah", "sai", "sal", + "sam", "saq", "sas", "sat", "saz", "sba", "sbp", "srd", "scn", "sco", "snd", "sdc", "sdh", + "sme", "see", "seh", "sei", "sel", "sem", "ses", "sag", "sga", "sgn", "sgs", "shi", "shn", + "shu", "sin", "sid", "sio", "sit", "slk", "slv", "sla", "sli", "sly", "smo", "sma", "smi", + "smj", "smn", "sms", "sna", "snk", "som", "sog", "son", "sqi", "srp", "srn", "srr", "ssw", + "ssa", "ssy", "sot", "stq", "sun", "suk", "sus", "sux", "swe", "swa", "swb", "syc", "syr", + "szl", "tam", "tai", "tcy", "tel", "tem", "teo", "ter", "tet", "tgk", "tha", "tir", "tig", + "tiv", "tuk", "tkl", "tkr", "tlh", "tli", "tly", "tmh", "tsn", "ton", "tog", "tok", "tpi", + "tur", "tru", "trv", "tso", "tsd", "tsi", "tat", "ttt", "tum", "tup", "tut", "tvl", "twi", + "twq", "tah", "tyv", "tzm", "udm", "uig", "uga", "ukr", "umb", "und", "urd", "uzb", "vai", + "ven", "vec", "vep", "vie", "vls", "vmf", "vmw", "vol", "vot", "vro", "vun", "wln", "wae", + "wak", "wal", "war", "was", "wbp", "wen", "wol", "wuu", "xal", "xho", "xmf", "xnr", "xog", + "yao", "yap", "yav", "ybb", "yid", "yor", "ypk", "yrl", "yue", "zha", "zap", "zbl", "zea", + "zen", "zgh", "zho", "znd", "zul", "zun", "zxx", "zza", nullptr, /* "in", "iw", "ji", "jw", "mo", "sh", "swc", "tl", */ "ind", "heb", "yid", "jaw", "mol", "srp", "swc", "tgl", @@ -522,8 +451,8 @@ inline bool UPRV_OK_VALUE_PUNCTUATION(char c) { return c == '_' || c == '-' || c #define ULOC_KEYWORD_BUFFER_LEN 25 #define ULOC_MAX_NO_KEYWORDS 25 -U_CAPI const char * U_EXPORT2 -locale_getKeywordsStart(std::string_view localeID) { +U_CAPI const char* U_EXPORT2 +locale_getKeywordsStart(std::string_view localeID U_LIFETIME_BOUND) { if (size_t pos = localeID.find('@'); pos != std::string_view::npos) { return localeID.data() + pos; } @@ -1195,12 +1124,12 @@ std::optional _findIndex(const char* const* list, const char* key) } // namespace U_CFUNC const char* -uloc_getCurrentCountryID(const char* oldID){ +uloc_getCurrentCountryID(const char* oldID U_LIFETIME_BOUND) { std::optional offset = _findIndex(DEPRECATED_COUNTRIES, oldID); return offset.has_value() ? REPLACEMENT_COUNTRIES[*offset] : oldID; } U_CFUNC const char* -uloc_getCurrentLanguageID(const char* oldID){ +uloc_getCurrentLanguageID(const char* oldID U_LIFETIME_BOUND) { std::optional offset = _findIndex(DEPRECATED_LANGUAGES, oldID); return offset.has_value() ? REPLACEMENT_LANGUAGES[*offset] : oldID; } @@ -2374,7 +2303,7 @@ uloc_getISOCountries() } U_CAPI const char* U_EXPORT2 -uloc_toUnicodeLocaleKey(const char* keyword) +uloc_toUnicodeLocaleKey(const char* keyword U_LIFETIME_BOUND) { if (keyword == nullptr || *keyword == '\0') { return nullptr; } std::optional result = ulocimp_toBcpKeyWithFallback(keyword); @@ -2382,7 +2311,7 @@ uloc_toUnicodeLocaleKey(const char* keyword) } U_EXPORT std::optional -ulocimp_toBcpKeyWithFallback(std::string_view keyword) +ulocimp_toBcpKeyWithFallback(std::string_view keyword U_LIFETIME_BOUND) { std::optional bcpKey = ulocimp_toBcpKey(keyword); if (!bcpKey.has_value() && @@ -2394,7 +2323,7 @@ ulocimp_toBcpKeyWithFallback(std::string_view keyword) } U_CAPI const char* U_EXPORT2 -uloc_toUnicodeLocaleType(const char* keyword, const char* value) +uloc_toUnicodeLocaleType(const char* keyword, const char* value U_LIFETIME_BOUND) { if (keyword == nullptr || *keyword == '\0' || value == nullptr || *value == '\0') { return nullptr; } @@ -2403,7 +2332,7 @@ uloc_toUnicodeLocaleType(const char* keyword, const char* value) } U_EXPORT std::optional -ulocimp_toBcpTypeWithFallback(std::string_view keyword, std::string_view value) +ulocimp_toBcpTypeWithFallback(std::string_view keyword, std::string_view value U_LIFETIME_BOUND) { std::optional bcpType = ulocimp_toBcpType(keyword, value); if (!bcpType.has_value() && @@ -2444,7 +2373,7 @@ isWellFormedLegacyType(std::string_view legacyType) } // namespace U_CAPI const char* U_EXPORT2 -uloc_toLegacyKey(const char* keyword) +uloc_toLegacyKey(const char* keyword U_LIFETIME_BOUND) { if (keyword == nullptr || *keyword == '\0') { return nullptr; } std::optional result = ulocimp_toLegacyKeyWithFallback(keyword); @@ -2452,7 +2381,7 @@ uloc_toLegacyKey(const char* keyword) } U_EXPORT std::optional -ulocimp_toLegacyKeyWithFallback(std::string_view keyword) +ulocimp_toLegacyKeyWithFallback(std::string_view keyword U_LIFETIME_BOUND) { std::optional legacyKey = ulocimp_toLegacyKey(keyword); if (!legacyKey.has_value() && isWellFormedLegacyKey(keyword)) { @@ -2469,7 +2398,7 @@ ulocimp_toLegacyKeyWithFallback(std::string_view keyword) } U_CAPI const char* U_EXPORT2 -uloc_toLegacyType(const char* keyword, const char* value) +uloc_toLegacyType(const char* keyword, const char* value U_LIFETIME_BOUND) { if (keyword == nullptr || *keyword == '\0' || value == nullptr || *value == '\0') { return nullptr; } @@ -2478,7 +2407,7 @@ uloc_toLegacyType(const char* keyword, const char* value) } U_EXPORT std::optional -ulocimp_toLegacyTypeWithFallback(std::string_view keyword, std::string_view value) +ulocimp_toLegacyTypeWithFallback(std::string_view keyword, std::string_view value U_LIFETIME_BOUND) { std::optional legacyType = ulocimp_toLegacyType(keyword, value); if (!legacyType.has_value() && isWellFormedLegacyType(value)) { diff --git a/deps/icu-small/source/common/uloc_keytype.cpp b/deps/icu-small/source/common/uloc_keytype.cpp index c9decf7cd18f..f089626c979e 100644 --- a/deps/icu-small/source/common/uloc_keytype.cpp +++ b/deps/icu-small/source/common/uloc_keytype.cpp @@ -469,7 +469,7 @@ ulocimp_toLegacyKey(std::string_view key) { } U_EXPORT std::optional -ulocimp_toBcpType(std::string_view key, std::string_view type) { +ulocimp_toBcpType(std::string_view key, std::string_view type U_LIFETIME_BOUND) { if (!init()) { return std::nullopt; } @@ -502,7 +502,7 @@ ulocimp_toBcpType(std::string_view key, std::string_view type) { U_EXPORT std::optional -ulocimp_toLegacyType(std::string_view key, std::string_view type) { +ulocimp_toLegacyType(std::string_view key, std::string_view type U_LIFETIME_BOUND) { if (!init()) { return std::nullopt; } diff --git a/deps/icu-small/source/common/uloc_tag.cpp b/deps/icu-small/source/common/uloc_tag.cpp index b2e9946f48a7..a62a6d0b9186 100644 --- a/deps/icu-small/source/common/uloc_tag.cpp +++ b/deps/icu-small/source/common/uloc_tag.cpp @@ -312,7 +312,7 @@ void ultag_close(ULanguageTag* langtag); const char* -ultag_getLanguage(const ULanguageTag* langtag); +ultag_getLanguage(const ULanguageTag* langtag U_LIFETIME_BOUND); #if 0 const char* @@ -320,34 +320,34 @@ ultag_getJDKLanguage(const ULanguageTag* langtag); #endif const char* -ultag_getExtlang(const ULanguageTag* langtag, int32_t idx); +ultag_getExtlang(const ULanguageTag* langtag U_LIFETIME_BOUND, int32_t idx); int32_t ultag_getExtlangSize(const ULanguageTag* langtag); const char* -ultag_getScript(const ULanguageTag* langtag); +ultag_getScript(const ULanguageTag* langtag U_LIFETIME_BOUND); const char* -ultag_getRegion(const ULanguageTag* langtag); +ultag_getRegion(const ULanguageTag* langtag U_LIFETIME_BOUND); const char* -ultag_getVariant(const ULanguageTag* langtag, int32_t idx); +ultag_getVariant(const ULanguageTag* langtag U_LIFETIME_BOUND, int32_t idx); int32_t ultag_getVariantsSize(const ULanguageTag* langtag); const char* -ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx); +ultag_getExtensionKey(const ULanguageTag* langtag U_LIFETIME_BOUND, int32_t idx); const char* -ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx); +ultag_getExtensionValue(const ULanguageTag* langtag U_LIFETIME_BOUND, int32_t idx); int32_t ultag_getExtensionsSize(const ULanguageTag* langtag); const char* -ultag_getPrivateUse(const ULanguageTag* langtag); +ultag_getPrivateUse(const ULanguageTag* langtag U_LIFETIME_BOUND); #if 0 const char* @@ -677,7 +677,7 @@ _isTKey(const char* s, int32_t len) } // namespace const char* -ultag_getTKeyStart(const char *localeID) { +ultag_getTKeyStart(const char* localeID U_LIFETIME_BOUND) { const char *result = localeID; const char *sep; while((sep = uprv_strchr(result, SEP)) != nullptr) { @@ -2416,7 +2416,7 @@ ultag_close(ULanguageTag* langtag) { } const char* -ultag_getLanguage(const ULanguageTag* langtag) { +ultag_getLanguage(const ULanguageTag* langtag U_LIFETIME_BOUND) { return langtag->language; } @@ -2434,7 +2434,7 @@ ultag_getJDKLanguage(const ULanguageTag* langtag) { #endif const char* -ultag_getExtlang(const ULanguageTag* langtag, int32_t idx) { +ultag_getExtlang(const ULanguageTag* langtag U_LIFETIME_BOUND, int32_t idx) { if (idx >= 0 && idx < MAXEXTLANG) { return langtag->extlang[idx]; } @@ -2454,17 +2454,17 @@ ultag_getExtlangSize(const ULanguageTag* langtag) { } const char* -ultag_getScript(const ULanguageTag* langtag) { +ultag_getScript(const ULanguageTag* langtag U_LIFETIME_BOUND) { return langtag->script; } const char* -ultag_getRegion(const ULanguageTag* langtag) { +ultag_getRegion(const ULanguageTag* langtag U_LIFETIME_BOUND) { return langtag->region; } const char* -ultag_getVariant(const ULanguageTag* langtag, int32_t idx) { +ultag_getVariant(const ULanguageTag* langtag U_LIFETIME_BOUND, int32_t idx) { const char *var = nullptr; VariantListEntry *cur = langtag->variants; int32_t i = 0; @@ -2494,7 +2494,7 @@ ultag_getVariantsSize(const ULanguageTag* langtag) { } const char* -ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx) { +ultag_getExtensionKey(const ULanguageTag* langtag U_LIFETIME_BOUND, int32_t idx) { const char *key = nullptr; ExtensionListEntry *cur = langtag->extensions; int32_t i = 0; @@ -2510,7 +2510,7 @@ ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx) { } const char* -ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx) { +ultag_getExtensionValue(const ULanguageTag* langtag U_LIFETIME_BOUND, int32_t idx) { const char *val = nullptr; ExtensionListEntry *cur = langtag->extensions; int32_t i = 0; @@ -2540,7 +2540,7 @@ ultag_getExtensionsSize(const ULanguageTag* langtag) { } const char* -ultag_getPrivateUse(const ULanguageTag* langtag) { +ultag_getPrivateUse(const ULanguageTag* langtag U_LIFETIME_BOUND) { return langtag->privateuse; } diff --git a/deps/icu-small/source/common/ulocale.cpp b/deps/icu-small/source/common/ulocale.cpp index 33814713dc1b..f561e504cea4 100644 --- a/deps/icu-small/source/common/ulocale.cpp +++ b/deps/icu-small/source/common/ulocale.cpp @@ -40,7 +40,7 @@ ulocale_close(ULocale* locale) { } #define IMPL_ULOCALE_STRING_GETTER(N1, N2) \ -const char* ulocale_get ## N1(const ULocale* locale) { \ +const char* ulocale_get ## N1(const ULocale* locale U_LIFETIME_BOUND) { \ if (locale == nullptr) return nullptr; \ return CONST_INTERNAL(locale)->get ## N2(); \ } diff --git a/deps/icu-small/source/common/ulocbuilder.cpp b/deps/icu-small/source/common/ulocbuilder.cpp index b8b6ce8c1869..b770392b4fd6 100644 --- a/deps/icu-small/source/common/ulocbuilder.cpp +++ b/deps/icu-small/source/common/ulocbuilder.cpp @@ -7,8 +7,8 @@ #include "unicode/localebuilder.h" #include "unicode/locid.h" #include "unicode/stringpiece.h" -#include "unicode/umachine.h" #include "unicode/ulocbuilder.h" +#include "unicode/utypes.h" #include "bytesinkutil.h" #include "cstring.h" #include "ustr_imp.h" diff --git a/deps/icu-small/source/common/ulocimp.h b/deps/icu-small/source/common/ulocimp.h index a45eba651f77..49cc42762aec 100644 --- a/deps/icu-small/source/common/ulocimp.h +++ b/deps/icu-small/source/common/ulocimp.h @@ -50,22 +50,22 @@ inline bool _isIDSeparator(char a) { return a == '_' || a == '-'; } } // namespace U_CFUNC const char* -uloc_getCurrentCountryID(const char* oldID); +uloc_getCurrentCountryID(const char* oldID U_LIFETIME_BOUND); U_CFUNC const char* -uloc_getCurrentLanguageID(const char* oldID); +uloc_getCurrentLanguageID(const char* oldID U_LIFETIME_BOUND); U_COMMON_API std::optional -ulocimp_toBcpKeyWithFallback(std::string_view keyword); +ulocimp_toBcpKeyWithFallback(std::string_view keyword U_LIFETIME_BOUND); U_COMMON_API std::optional -ulocimp_toBcpTypeWithFallback(std::string_view keyword, std::string_view value); +ulocimp_toBcpTypeWithFallback(std::string_view keyword, std::string_view value U_LIFETIME_BOUND); U_COMMON_API std::optional -ulocimp_toLegacyKeyWithFallback(std::string_view keyword); +ulocimp_toLegacyKeyWithFallback(std::string_view keyword U_LIFETIME_BOUND); U_COMMON_API std::optional -ulocimp_toLegacyTypeWithFallback(std::string_view keyword, std::string_view value); +ulocimp_toLegacyTypeWithFallback(std::string_view keyword, std::string_view value U_LIFETIME_BOUND); U_COMMON_API icu::CharString ulocimp_getKeywords(std::string_view localeID, @@ -363,8 +363,8 @@ ulocimp_minimizeSubtags(const char* localeID, bool favorScript, UErrorCode& err); -U_CAPI const char * U_EXPORT2 -locale_getKeywordsStart(std::string_view localeID); +U_CAPI const char* U_EXPORT2 +locale_getKeywordsStart(std::string_view localeID U_LIFETIME_BOUND); bool ultag_isExtensionSubtags(const char* s, int32_t len); @@ -403,7 +403,7 @@ bool ultag_isVariantSubtags(const char* s, int32_t len); const char* -ultag_getTKeyStart(const char* localeID); +ultag_getTKeyStart(const char* localeID U_LIFETIME_BOUND); U_COMMON_API std::optional ulocimp_toBcpKey(std::string_view key); @@ -412,10 +412,10 @@ U_COMMON_API std::optional ulocimp_toLegacyKey(std::string_view key); U_COMMON_API std::optional -ulocimp_toBcpType(std::string_view key, std::string_view type); +ulocimp_toBcpType(std::string_view key, std::string_view type U_LIFETIME_BOUND); U_COMMON_API std::optional -ulocimp_toLegacyType(std::string_view key, std::string_view type); +ulocimp_toLegacyType(std::string_view key, std::string_view type U_LIFETIME_BOUND); /* Function for testing purpose */ U_COMMON_API const char* const* diff --git a/deps/icu-small/source/common/umapfile.cpp b/deps/icu-small/source/common/umapfile.cpp index c01ac69c3a42..c99b9ef4a723 100644 --- a/deps/icu-small/source/common/umapfile.cpp +++ b/deps/icu-small/source/common/umapfile.cpp @@ -215,18 +215,19 @@ typedef HANDLE MemoryMap; UDataMemory_init(pData); /* Clear the output struct. */ - /* determine the length of the file */ - if(stat(path, &mystat)!=0 || mystat.st_size<=0) { - return false; - } - length=mystat.st_size; - /* open the file */ fd=open(path, O_RDONLY); if(fd==-1) { return false; } + /* determine the length of the file */ + if(stat(path, &mystat)!=0 || mystat.st_size<=0) { + close(fd); + return false; + } + length=mystat.st_size; + /* get a view of the mapping */ #if U_PLATFORM != U_PF_HPUX data=mmap(nullptr, length, PROT_READ, MAP_SHARED, fd, 0); diff --git a/deps/icu-small/source/common/unames.cpp b/deps/icu-small/source/common/unames.cpp index 71b2baff6c19..884f1c8499c5 100644 --- a/deps/icu-small/source/common/unames.cpp +++ b/deps/icu-small/source/common/unames.cpp @@ -85,6 +85,195 @@ typedef struct { uint32_t tokenStringOffset, groupsOffset, groupStringOffset, algNamesOffset; } UCharNames; +namespace { +// For a character name `name`, a query string `query` matches `name` under UAX44-LM2 if and only if +// the following returns true: +// auto matcher = CharacterNameQuery(query).matcher(); +// for (const char c : name) { +// if (!matcher.consistentWith(c)) { +// return false; +// } +// } +// return matcher.matches(); +// `name` must be an exact character name, in particular, all uppercase, with no underscores, no +// double hyphens, no isolated hyphens. There are no constraints on `query`; for instance, this +// class will match name="ZANABAZAR SQUARE LETTER -A" with query="Zanabazar-square_letter_-A". +// `Matcher::consistentWith` is not retryable: once it returns false, the `Matcher` should not be +// used again. +class CharacterNameQuery { + public: + class Matcher { + public: + // `query` must outlive the constructed object. + Matcher(const CharacterNameQuery& query) + : query(query), skeletonIterator(query.skeleton.begin()) {} + + bool consistentWith(char c) { + // Instead of constructing a skeleton from the name as in the constructor of + // CharacterNameQuery, we check character-by-character if the skeleton we would + // construct from the name would be consistent with `query->skeleton`. + // We require that this be called with characters from an actual character name, so we + // need not worry about case or underscores here. + + if (skeletonIterator == query.skeleton.end()) { + return false; + } + if (c == ' ') { + // The last hyphen was word-final; check that there is a corresponding significant + // hyphen in the skeleton. A hyphen in a character name cannot be both word-final + // and word-initial by rule R3 in + // https://unicode.org/versions/Unicode17.0.0/core-spec/chapter-4/#G135165, so we do + // not have to worry about checking the skeleton for the same significant hyphen + // twice. + if (lastChar == '-') { + if (*skeletonIterator++ != lastChar) { + return false; + } + } + lastChar = c; + return true; + } else if (c == '-') { + if (lastChar == ' ' || + (query.is1180 && skeletonIterator == query.skeleton.end() - 2)) { + // If lastChar == ' ', this is a word-initial hyphen, so we know it is + // significant. Check that we are expecting it. + // If we are looking for U+1180 and we matched everything but the trailing -E, + // this could be that hyphen; move past it. This could turn out to be a + // different character name if there is something other than E afterwards, in + // which case we should in principle have ignored the hyphen; but then since the + // suffixes will differ, we will return false anyway. + // For example, when searching for HANGUL JUNGSEONG O-E and checking consistency + // with HANGUL JUNGSEONG O-U, if we computed both skeleta and compared them, + // the skeleta would be HANGULJUNGSEONGO-E and HANGULJUNGSEONGOU, and the + // comparison would fail on - vs. U. + // Here, while feeding HANGUL JUNGSEONG O-U character-by-character, we assume + // its skeleton would be HANGULJUNGSEONGO-, and fail on E vs. U. + if (*skeletonIterator++ != c) { + return false; + } + } + // If lastChar is not ' ', we do not know whether this hyphen is word-final, so we + // cannot check against the skeleton. + lastChar = c; + return true; + } else { + if (*skeletonIterator++ != c) { + return false; + } + lastChar = c; + return true; + } + } + + bool consistentWith(const std::string_view substring) { + for (const char c : substring) { + if (!consistentWith(c)) { + return false; + } + } + return true; + } + + bool matches() { + // If a character name could end with a HYPHEN-MINUS, that HYPHEN-MINUS would be + // significant: we would need to check that if lastChar == '-', + // *skeletonIterator == '-', and then advance skeletonIterator. + // However, this is disallowed by rule R3 in + // https://unicode.org/versions/Unicode17.0.0/core-spec/chapter-4/#G135165. + U_ASSERT(lastChar != '-'); + return skeletonIterator == query.skeleton.end(); + } + + std::string_view remainingSignificantCharacters() const { + return query.skeleton.substr(skeletonIterator - query.skeleton.begin()); + } + + private: + const CharacterNameQuery& query; + std::string_view::const_iterator skeletonIterator; + // Initialized to ' ' so that a leading hyphen is treated like a hyphen that follows a + // space (non-medial and thus not ignorable). There are in fact no leading hyphens in + // character names by rule R3 in + // https://unicode.org/versions/Unicode17.0.0/core-spec/chapter-4/#G135165, and technically + // we do not read the value of this variable before writing to it because the first call to + // consistentWith never has c=' ' either by R4, but it seems cleanest to initialize lastChar + // nonetheless. + char lastChar = ' '; + }; + + explicit CharacterNameQuery(std::string_view query) { + // Construct a skeleton obtained by + // 1. removing medial hyphens (except the one in the name of U+1180); + // 2. removing spaces and underscores; + // 3. uppercasing, + // as described in https://www.unicode.org/reports/tr44/#UAX44-LM2. + // We do all three in a single pass. + char *skeletonLimit = skeletonData; + for (std::size_t i = 0; i < query.length(); ++i) { + U_ASSERT(skeletonLimit < skeletonData + sizeof(skeletonData)); + if (skeletonLimit >= skeletonData + sizeof(skeletonData)) { + // The caller should limit the query length appropriately; if they do not, assert, + // and if assertions are disabled, query for the empty string (which will quickly + // find nothing). + skeletonLimit = skeletonData; + break; + } + if (query[i] == ' ' || query[i] == '_') { + continue; + } + if (query[i] == '-') { + bool isMedial; + bool is1180MedialHyphen = false; + if (i == 0 || i == query.length() - 1) { + isMedial = false; + } else { + isMedial = isASCIILetterOrDigit(query[i - 1]) && isASCIILetterOrDigit(query[i + 1]); + } + // A medial hyphen is the hyphen in the name of U+1180 HANGUL JUNGSEONG O-E if what + // comes before skeletonizes to HANGULJUNGSEONGO and what comes after skeletonizes + // to E. + if (isMedial && uprv_toupper(query[i + 1]) == 'E' && + std::string_view(skeletonData, skeletonLimit - skeletonData) == "HANGULJUNGSEONGO") { + is1180MedialHyphen = true; + // If there is anything significant after the E, the part of the name after the + // hyphen does not skeletonize to E, and thus this is not U+1180. + // There can be no hyphens there: if there is one, it is either non-medial, or + // there is another letter beyond the E. The insignificant characters are thus + // only spaces and underscores. + for (std::size_t j = i + 2; j < query.length(); ++j) { + if (query[j] != ' ' && query[j] != '_') { + is1180MedialHyphen = false; + } + } + } + if (!isMedial || is1180MedialHyphen) { + *skeletonLimit++ = query[i]; + } + } else { + *skeletonLimit++ = uprv_toupper(query[i]); + } + } + skeleton = std::string_view(skeletonData, skeletonLimit - skeletonData); + // This can be true even if we never went through the is1180MedialHyphen path, e.g., if the + // query was "HANGUL JUNGSEONG O -E". + is1180 = skeleton == "HANGULJUNGSEONGO-E"; + } + + Matcher matcher() const { + return Matcher(*this); + } + +private: + static bool isASCIILetterOrDigit(const char c) { + return uprv_isASCIILetter(c) || (c >= '0' && c <= '9'); + } + + char skeletonData[120]; + std::string_view skeleton; + bool is1180; +}; +} // namespace + /* * Get the groups table from a UCharNames struct. * The groups table consists of one uint16_t groupCount followed by @@ -97,7 +286,7 @@ typedef struct { #define GET_GROUPS(names) (const uint16_t *)((const char *)names+names->groupsOffset) typedef struct { - const char *otherName; + const CharacterNameQuery *otherName; UChar32 code; } FindName; @@ -293,14 +482,6 @@ expandName(UCharNames *names, /* explicit letter */ WRITE_CHAR(buffer, bufferLength, bufferPos, c); } else { - /* stop, but skip the semicolon if we are seeking - extended names and there was no 2.0 name but there - is a 1.0 name. */ - if(!bufferPos && nameChoice == U_EXTENDED_CHAR_NAME) { - if (static_cast(';') >= tokenCount || tokens[static_cast(';')] == static_cast(-1)) { - continue; - } - } /* finished */ break; } @@ -330,12 +511,12 @@ expandName(UCharNames *names, static UBool compareName(UCharNames *names, const uint8_t *name, uint16_t nameLength, UCharNameChoice nameChoice, - const char *otherName) { + const CharacterNameQuery& otherName) { uint16_t* tokens = reinterpret_cast(names) + 8; uint16_t token, tokenCount=*tokens++; uint8_t* tokenStrings = reinterpret_cast(names) + names->tokenStringOffset; uint8_t c; - const char *origOtherName = otherName; + auto matcher = otherName.matcher(); if(nameChoice!=U_UNICODE_CHAR_NAME && nameChoice!=U_EXTENDED_CHAR_NAME) { /* @@ -370,7 +551,7 @@ compareName(UCharNames *names, if(c>=tokenCount) { if(c!=';') { /* implicit letter */ - if (static_cast(c) != *otherName++) { + if (!matcher.consistentWith(c)) { return false; } } else { @@ -387,35 +568,24 @@ compareName(UCharNames *names, if (token == static_cast(-1)) { if(c!=';') { /* explicit letter */ - if (static_cast(c) != *otherName++) { + if (!matcher.consistentWith(c)) { return false; } } else { - /* stop, but skip the semicolon if we are seeking - extended names and there was no 2.0 name but there - is a 1.0 name. */ - if(otherName == origOtherName && nameChoice == U_EXTENDED_CHAR_NAME) { - if (static_cast(';') >= tokenCount || tokens[static_cast(';')] == static_cast(-1)) { - continue; - } - } /* finished */ break; } } else { /* write token word */ - uint8_t *tokenString=tokenStrings+token; - while((c=*tokenString++)!=0) { - if (static_cast(c) != *otherName++) { - return false; - } + if (!matcher.consistentWith(reinterpret_cast(tokenStrings + token))) { + return false; } } } } /* complete match? */ - return *otherName == 0; + return matcher.matches(); } static uint8_t getCharCat(UChar32 cp) { @@ -622,7 +792,7 @@ enumGroupNames(UCharNames *names, const uint16_t *group, ++start; } } else { - const char* otherName = static_cast(context)->otherName; + const CharacterNameQuery& otherName = *static_cast(context)->otherName; while(start<=end) { if(compareName(names, s+offsets[start&GROUP_MASK], lengths[start&GROUP_MASK], nameChoice, otherName)) { static_cast(context)->code = start; @@ -1075,8 +1245,9 @@ enumAlgNames(AlgorithmicRange *range, * It returns 0xffff otherwise. */ static UChar32 -findAlgName(AlgorithmicRange *range, UCharNameChoice nameChoice, const char *otherName) { +findAlgName(AlgorithmicRange *range, UCharNameChoice nameChoice, CharacterNameQuery& query) { UChar32 code; + auto matcher = query.matcher(); if(nameChoice!=U_UNICODE_CHAR_NAME && nameChoice!=U_EXTENDED_CHAR_NAME) { return 0xffff; @@ -1086,22 +1257,15 @@ findAlgName(AlgorithmicRange *range, UCharNameChoice nameChoice, const char *oth case 0: { /* name = prefix hex-digits */ const char* s = reinterpret_cast(range + 1); - char c; - - uint16_t i, count; /* compare prefix */ - while((c=*s++)!=0) { - if (c != *otherName++) { - return 0xffff; - } + if (!matcher.consistentWith(s)) { + return 0xffff; } /* read hexadecimal code point value */ - count=range->variant; code=0; - for(i=0; istart <= static_cast(code) && static_cast(code) <= range->end) { + if (range->start <= static_cast(code) && static_cast(code) <= range->end) { return code; } break; @@ -1123,30 +1287,32 @@ findAlgName(AlgorithmicRange *range, UCharNameChoice nameChoice, const char *oth const char *elementBases[8], *elements[8]; const uint16_t* factors = reinterpret_cast(range + 1); uint16_t count=range->variant; - const char *s = reinterpret_cast(factors + count), *t; + const char *s = reinterpret_cast(factors + count); UChar32 start, limit; uint16_t i, idx; - char c; - /* name = prefix factorized-elements */ /* compare prefix */ - while((c=*s++)!=0) { - if (c != *otherName++) { - return 0xffff; - } + std::string_view prefix = s; + if (!matcher.consistentWith(prefix)) { + return 0xffff; } + s += prefix.length() + 1; + start = static_cast(range->start); limit = static_cast(range->end + 1); - + + // This implementation assumes that the suffix does not contain SPACEs nor HYPHEN-MINUSes, + // which is the case in practice for the names of Hangul syllables. + std::string_view querySuffix = matcher.remainingSignificantCharacters(); /* initialize the suffix elements for enumeration; indexes should all be set to 0 */ writeFactorSuffix(factors, count, s, 0, indexes, elementBases, elements, buffer, sizeof(buffer)); /* compare the first suffix */ - if(0==uprv_strcmp(otherName, buffer)) { + if(querySuffix == buffer) { return start; } @@ -1171,17 +1337,18 @@ findAlgName(AlgorithmicRange *range, UCharNameChoice nameChoice, const char *oth } /* to make matters a little easier, just compare all elements of the suffix */ - t=otherName; + auto it = querySuffix.begin(); for(i=0; i') { // Parse a string like "" where HHHH is a hex code point. @@ -1609,12 +1777,15 @@ u_charFromName(UCharNameChoice nameChoice, return error; } + // From now on we do UAX44 matching. + CharacterNameQuery query(name); + /* try algorithmic names now */ p=(uint32_t *)((uint8_t *)uCharNames+uCharNames->algNamesOffset); i=*p; algRange=(AlgorithmicRange *)(p+1); while(i>0) { - if((cp=findAlgName(algRange, nameChoice, upper))!=0xffff) { + if((cp=findAlgName(algRange, nameChoice, query))!=0xffff) { return cp; } algRange=(AlgorithmicRange *)((uint8_t *)algRange+algRange->size); @@ -1622,7 +1793,7 @@ u_charFromName(UCharNameChoice nameChoice, } /* normal character name */ - findName.otherName=upper; + findName.otherName=&query; findName.code=error; enumNames(uCharNames, 0, UCHAR_MAX_VALUE + 1, DO_FIND_NAME, &findName, nameChoice); if (findName.code == error) { diff --git a/deps/icu-small/source/common/unicode/appendable.h b/deps/icu-small/source/common/unicode/appendable.h index 0e37f4562a58..520ccc8ef0ff 100644 --- a/deps/icu-small/source/common/unicode/appendable.h +++ b/deps/icu-small/source/common/unicode/appendable.h @@ -141,10 +141,11 @@ class U_COMMON_API Appendable : public UObject { * @return a buffer with *resultCapacity>=minCapacity * @stable ICU 4.8 */ - virtual char16_t *getAppendBuffer(int32_t minCapacity, - int32_t desiredCapacityHint, - char16_t *scratch, int32_t scratchCapacity, - int32_t *resultCapacity); + virtual char16_t* getAppendBuffer(int32_t minCapacity, + int32_t desiredCapacityHint, + char16_t* scratch U_LIFETIME_BOUND, + int32_t scratchCapacity, + int32_t* resultCapacity) U_LIFETIME_BOUND; }; /** @@ -223,10 +224,10 @@ class U_COMMON_API UnicodeStringAppendable : public Appendable { * @return a buffer with *resultCapacity>=minCapacity * @stable ICU 4.8 */ - virtual char16_t *getAppendBuffer(int32_t minCapacity, - int32_t desiredCapacityHint, - char16_t *scratch, int32_t scratchCapacity, - int32_t *resultCapacity) override; + virtual char16_t* getAppendBuffer(int32_t minCapacity, + int32_t desiredCapacityHint, + char16_t* scratch U_LIFETIME_BOUND, int32_t scratchCapacity, + int32_t* resultCapacity) U_LIFETIME_BOUND override; private: UnicodeString &str; diff --git a/deps/icu-small/source/common/unicode/brkiter.h b/deps/icu-small/source/common/unicode/brkiter.h index 088592b873e5..8be80dc6d98b 100644 --- a/deps/icu-small/source/common/unicode/brkiter.h +++ b/deps/icu-small/source/common/unicode/brkiter.h @@ -152,7 +152,7 @@ class U_COMMON_API_CLASS BreakIterator : public UObject { * Return a CharacterIterator over the text being analyzed. * @stable ICU 2.0 */ - U_COMMON_API virtual CharacterIterator& getText() const = 0; + U_COMMON_API virtual CharacterIterator& getText() const U_LIFETIME_BOUND = 0; /** * Get a UText for the text being analyzed. @@ -168,7 +168,7 @@ class U_COMMON_API_CLASS BreakIterator : public UObject { * UText was provided, it will always be returned. * @stable ICU 3.4 */ - U_COMMON_API virtual UText* getUText(UText* fillIn, UErrorCode& status) const = 0; + U_COMMON_API virtual UText* getUText(UText* fillIn U_LIFETIME_BOUND, UErrorCode& status) const = 0; /** * Change the text over which this operates. The text boundary is @@ -483,9 +483,10 @@ class U_COMMON_API_CLASS BreakIterator : public UObject { * @return user-displayable name * @stable ICU 2.0 */ - U_COMMON_API static UnicodeString& U_EXPORT2 getDisplayName(const Locale& objectLocale, - const Locale& displayLocale, - UnicodeString& name); + U_COMMON_API static UnicodeString& U_EXPORT2 + getDisplayName(const Locale& objectLocale, + const Locale& displayLocale, + UnicodeString& name U_LIFETIME_BOUND); /** * Get name of the object for the desired Locale, in the language of the @@ -495,8 +496,9 @@ class U_COMMON_API_CLASS BreakIterator : public UObject { * @return user-displayable name * @stable ICU 2.0 */ - U_COMMON_API static UnicodeString& U_EXPORT2 getDisplayName(const Locale& objectLocale, - UnicodeString& name); + U_COMMON_API static UnicodeString& U_EXPORT2 + getDisplayName(const Locale& objectLocale, + UnicodeString& name U_LIFETIME_BOUND); #ifndef U_FORCE_HIDE_DEPRECATED_API /** @@ -593,7 +595,8 @@ class U_COMMON_API_CLASS BreakIterator : public UObject { * @return the locale * @internal */ - U_COMMON_API const char* getLocaleID(ULocDataLocaleType type, UErrorCode& status) const; + U_COMMON_API const char* getLocaleID(ULocDataLocaleType type, + UErrorCode& status) const U_LIFETIME_BOUND; #endif /* U_HIDE_INTERNAL_API */ /** @@ -621,7 +624,8 @@ class U_COMMON_API_CLASS BreakIterator : public UObject { * * @stable ICU 49 */ - U_COMMON_API virtual BreakIterator& refreshInputText(UText* input, UErrorCode& status) = 0; + U_COMMON_API virtual BreakIterator& refreshInputText(UText* input, + UErrorCode& status) U_LIFETIME_BOUND = 0; private: static BreakIterator* buildInstance(const Locale& loc, const char *type, UErrorCode& status); @@ -642,7 +646,7 @@ class U_COMMON_API_CLASS BreakIterator : public UObject { /** @internal */ U_COMMON_API BreakIterator(const Locale& valid, const Locale& actual); /** @internal. Assignment Operator, used by RuleBasedBreakIterator. */ - U_COMMON_API BreakIterator& operator=(const BreakIterator& other); + U_COMMON_API BreakIterator& operator=(const BreakIterator& other) U_LIFETIME_BOUND; #endif /* U_HIDE_INTERNAL_API */ private: diff --git a/deps/icu-small/source/common/unicode/bytestream.h b/deps/icu-small/source/common/unicode/bytestream.h index 224899b9567d..b6dbe60e83d6 100644 --- a/deps/icu-small/source/common/unicode/bytestream.h +++ b/deps/icu-small/source/common/unicode/bytestream.h @@ -149,8 +149,9 @@ class U_COMMON_API ByteSink : public UMemory { */ virtual char* GetAppendBuffer(int32_t min_capacity, int32_t desired_capacity_hint, - char* scratch, int32_t scratch_capacity, - int32_t* result_capacity); + char* scratch U_LIFETIME_BOUND, + int32_t scratch_capacity, + int32_t* result_capacity) U_LIFETIME_BOUND; /** * Flush internal buffers. @@ -201,7 +202,7 @@ class U_COMMON_API CheckedArrayByteSink : public ByteSink { * @return *this * @stable ICU 4.6 */ - virtual CheckedArrayByteSink& Reset(); + virtual CheckedArrayByteSink& Reset() U_LIFETIME_BOUND; /** * Append "bytes[0,n-1]" to this. * @param bytes the pointer to the bytes @@ -225,8 +226,9 @@ class U_COMMON_API CheckedArrayByteSink : public ByteSink { */ virtual char* GetAppendBuffer(int32_t min_capacity, int32_t desired_capacity_hint, - char* scratch, int32_t scratch_capacity, - int32_t* result_capacity) override; + char* scratch U_LIFETIME_BOUND, + int32_t scratch_capacity, + int32_t* result_capacity) U_LIFETIME_BOUND override; /** * Returns the number of bytes actually written to the sink. * @return number of bytes written to the buffer diff --git a/deps/icu-small/source/common/unicode/bytestrie.h b/deps/icu-small/source/common/unicode/bytestrie.h index c07dfada941e..81a959dce3ce 100644 --- a/deps/icu-small/source/common/unicode/bytestrie.h +++ b/deps/icu-small/source/common/unicode/bytestrie.h @@ -68,7 +68,7 @@ class U_COMMON_API BytesTrie : public UMemory { * @param trieBytes The byte array that contains the serialized trie. * @stable ICU 4.8 */ - BytesTrie(const void *trieBytes) + BytesTrie(const void* trieBytes U_LIFETIME_BOUND) : ownedArray_(nullptr), bytes_(static_cast(trieBytes)), pos_(bytes_), remainingMatchLength_(-1) {} @@ -93,7 +93,7 @@ class U_COMMON_API BytesTrie : public UMemory { * @return *this * @stable ICU 4.8 */ - BytesTrie &reset() { + BytesTrie& reset() U_LIFETIME_BOUND { pos_=bytes_; remainingMatchLength_=-1; return *this; @@ -126,7 +126,7 @@ class U_COMMON_API BytesTrie : public UMemory { * @see reset * @stable ICU 65 */ - BytesTrie &resetToState64(uint64_t state) { + BytesTrie& resetToState64(uint64_t state) U_LIFETIME_BOUND { remainingMatchLength_ = static_cast(state >> kState64RemainingShift) - 2; pos_ = bytes_ + (state & kState64PosMask); return *this; @@ -159,7 +159,7 @@ class U_COMMON_API BytesTrie : public UMemory { * @see resetToState * @stable ICU 4.8 */ - const BytesTrie &saveState(State &state) const { + const BytesTrie& saveState(State& state) const U_LIFETIME_BOUND { state.bytes=bytes_; state.pos=pos_; state.remainingMatchLength=remainingMatchLength_; @@ -176,7 +176,7 @@ class U_COMMON_API BytesTrie : public UMemory { * @see reset * @stable ICU 4.8 */ - BytesTrie &resetToState(const State &state) { + BytesTrie& resetToState(const State& state) U_LIFETIME_BOUND { if(bytes_==state.bytes && bytes_!=nullptr) { pos_=state.pos; remainingMatchLength_=state.remainingMatchLength; @@ -292,7 +292,9 @@ class U_COMMON_API BytesTrie : public UMemory { * function chaining. (See User Guide for details.) * @stable ICU 4.8 */ - Iterator(const void *trieBytes, int32_t maxStringLength, UErrorCode &errorCode); + Iterator(const void* trieBytes U_LIFETIME_BOUND, + int32_t maxStringLength, + UErrorCode& errorCode); /** * Iterates from the current state of the specified BytesTrie. @@ -318,7 +320,7 @@ class U_COMMON_API BytesTrie : public UMemory { * @return *this * @stable ICU 4.8 */ - Iterator &reset(); + Iterator& reset() U_LIFETIME_BOUND; /** * @return true if there are more elements. @@ -346,7 +348,7 @@ class U_COMMON_API BytesTrie : public UMemory { * @return The NUL-terminated byte sequence for the last successful next(). * @stable ICU 4.8 */ - StringPiece getString() const; + StringPiece getString() const U_LIFETIME_BOUND; /** * @return The value for the last successful next(). * @stable ICU 4.8 @@ -356,7 +358,9 @@ class U_COMMON_API BytesTrie : public UMemory { private: UBool truncateAndStop(); - const uint8_t *branchNext(const uint8_t *pos, int32_t length, UErrorCode &errorCode); + const uint8_t* branchNext(const uint8_t* pos U_LIFETIME_BOUND, + int32_t length, + UErrorCode& errorCode); const uint8_t *bytes_; const uint8_t *pos_; @@ -403,7 +407,7 @@ class U_COMMON_API BytesTrie : public UMemory { // Reads a compact 32-bit integer. // pos is already after the leadByte, and the lead byte is already shifted right by 1. static int32_t readValue(const uint8_t *pos, int32_t leadByte); - static inline const uint8_t *skipValue(const uint8_t *pos, int32_t leadByte) { + static inline const uint8_t* skipValue(const uint8_t* pos U_LIFETIME_BOUND, int32_t leadByte) { // U_ASSERT(leadByte>=kMinValueLead); if(leadByte>=(kMinTwoByteValueLead<<1)) { if(leadByte<(kMinThreeByteValueLead<<1)) { @@ -416,15 +420,15 @@ class U_COMMON_API BytesTrie : public UMemory { } return pos; } - static inline const uint8_t *skipValue(const uint8_t *pos) { + static inline const uint8_t* skipValue(const uint8_t* pos U_LIFETIME_BOUND) { int32_t leadByte=*pos++; return skipValue(pos, leadByte); } // Reads a jump delta and jumps. - static const uint8_t *jumpByDelta(const uint8_t *pos); + static const uint8_t* jumpByDelta(const uint8_t* pos U_LIFETIME_BOUND); - static inline const uint8_t *skipDelta(const uint8_t *pos) { + static inline const uint8_t* skipDelta(const uint8_t* pos U_LIFETIME_BOUND) { int32_t delta=*pos++; if(delta>=kMinTwoByteDeltaLead) { if(delta>> -inline const char16_t *uprv_char16PtrFromUChar(const T *p) { +template >> +inline const char16_t* uprv_char16PtrFromUChar(const T* p U_LIFETIME_BOUND) { if constexpr (std::is_same_v) { return p; } else { @@ -285,7 +285,7 @@ inline const char16_t *uprv_char16PtrFromUChar(const T *p) { } #if !U_CHAR16_IS_TYPEDEF && (!defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 180000) /** @internal */ -inline const char16_t *uprv_char16PtrFromUint16(const uint16_t *p) { +inline const char16_t* uprv_char16PtrFromUint16(const uint16_t* p U_LIFETIME_BOUND) { #if U_SHOW_CPLUSPLUS_API return ConstChar16Ptr(p).get(); #else @@ -298,7 +298,7 @@ inline const char16_t *uprv_char16PtrFromUint16(const uint16_t *p) { #endif #if U_SIZEOF_WCHAR_T==2 /** @internal */ -inline const char16_t *uprv_char16PtrFromWchar(const wchar_t *p) { +inline const char16_t* uprv_char16PtrFromWchar(const wchar_t* p U_LIFETIME_BOUND) { #if U_SHOW_CPLUSPLUS_API return ConstChar16Ptr(p).get(); #else @@ -318,7 +318,7 @@ inline const char16_t *uprv_char16PtrFromWchar(const wchar_t *p) { * @return p as const UChar * * @stable ICU 59 */ -inline const UChar *toUCharPtr(const char16_t *p) { +inline const UChar* toUCharPtr(const char16_t* p U_LIFETIME_BOUND) { #ifdef U_ALIASING_BARRIER U_ALIASING_BARRIER(p); #endif @@ -332,7 +332,7 @@ inline const UChar *toUCharPtr(const char16_t *p) { * @return p as UChar * * @stable ICU 59 */ -inline UChar *toUCharPtr(char16_t *p) { +inline UChar* toUCharPtr(char16_t* p U_LIFETIME_BOUND) { #ifdef U_ALIASING_BARRIER U_ALIASING_BARRIER(p); #endif @@ -346,7 +346,7 @@ inline UChar *toUCharPtr(char16_t *p) { * @return p as const OldUChar * * @stable ICU 59 */ -inline const OldUChar *toOldUCharPtr(const char16_t *p) { +inline const OldUChar* toOldUCharPtr(const char16_t* p U_LIFETIME_BOUND) { #ifdef U_ALIASING_BARRIER U_ALIASING_BARRIER(p); #endif @@ -360,7 +360,7 @@ inline const OldUChar *toOldUCharPtr(const char16_t *p) { * @return p as OldUChar * * @stable ICU 59 */ -inline OldUChar *toOldUCharPtr(char16_t *p) { +inline OldUChar* toOldUCharPtr(char16_t* p U_LIFETIME_BOUND) { #ifdef U_ALIASING_BARRIER U_ALIASING_BARRIER(p); #endif @@ -397,7 +397,7 @@ namespace internal { * Pass-through overload. * @internal */ -inline std::u16string_view toU16StringView(std::u16string_view sv) { return sv; } +inline std::u16string_view toU16StringView(std::u16string_view sv U_LIFETIME_BOUND) { return sv; } #if !U_CHAR16_IS_TYPEDEF && (!defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 180000) /** @@ -405,7 +405,7 @@ inline std::u16string_view toU16StringView(std::u16string_view sv) { return sv; * from std::basic_string_view to std::u16string_view. * @internal */ -inline std::u16string_view toU16StringView(std::basic_string_view sv) { +inline std::u16string_view toU16StringView(std::basic_string_view sv U_LIFETIME_BOUND) { return { ConstChar16Ptr(sv.data()), sv.length() }; } #endif @@ -416,7 +416,7 @@ inline std::u16string_view toU16StringView(std::basic_string_view sv) * from std::wstring_view to std::u16string_view. * @internal */ -inline std::u16string_view toU16StringView(std::wstring_view sv) { +inline std::u16string_view toU16StringView(std::wstring_view sv U_LIFETIME_BOUND) { return { ConstChar16Ptr(sv.data()), sv.length() }; } #endif @@ -427,7 +427,7 @@ inline std::u16string_view toU16StringView(std::wstring_view sv) { */ template >>> -inline std::u16string_view toU16StringViewNullable(const T& text) { +inline std::u16string_view toU16StringViewNullable(const T& text U_LIFETIME_BOUND) { return toU16StringView(text); } @@ -438,7 +438,7 @@ inline std::u16string_view toU16StringViewNullable(const T& text) { template >>, typename = void> -inline std::u16string_view toU16StringViewNullable(const T& text) { +inline std::u16string_view toU16StringViewNullable(const T& text U_LIFETIME_BOUND) { if (text == nullptr) return {}; // For backward compatibility. return toU16StringView(text); } diff --git a/deps/icu-small/source/common/unicode/chariter.h b/deps/icu-small/source/common/unicode/chariter.h index 411825677fd5..506358dbc729 100644 --- a/deps/icu-small/source/common/unicode/chariter.h +++ b/deps/icu-small/source/common/unicode/chariter.h @@ -186,7 +186,9 @@ class U_COMMON_API ForwardCharacterIterator : public UObject { * Assignment operator to be overridden in the implementing class. * @stable ICU 2.0 */ - ForwardCharacterIterator &operator=(const ForwardCharacterIterator&) { return *this; } + ForwardCharacterIterator& operator=(const ForwardCharacterIterator&) U_LIFETIME_BOUND { + return *this; + } }; /** @@ -664,7 +666,7 @@ class U_COMMON_API CharacterIterator : public ForwardCharacterIterator { * @return the newly set CharacterIterator. * @stable ICU 2.0 */ - CharacterIterator &operator=(const CharacterIterator &that); + CharacterIterator& operator=(const CharacterIterator& that) U_LIFETIME_BOUND; /** * Base class text length field. diff --git a/deps/icu-small/source/common/unicode/dtintrv.h b/deps/icu-small/source/common/unicode/dtintrv.h index 1fd0ba5deee9..7dcaae3dd6ba 100644 --- a/deps/icu-small/source/common/unicode/dtintrv.h +++ b/deps/icu-small/source/common/unicode/dtintrv.h @@ -101,7 +101,7 @@ class U_COMMON_API DateInterval : public UObject { * Default assignment operator * @stable ICU 4.0 */ - DateInterval& operator=(const DateInterval&); + DateInterval& operator=(const DateInterval&) U_LIFETIME_BOUND; /** * Equality operator. diff --git a/deps/icu-small/source/common/unicode/edits.h b/deps/icu-small/source/common/unicode/edits.h index bc3c9438222d..05c4ecb36083 100644 --- a/deps/icu-small/source/common/unicode/edits.h +++ b/deps/icu-small/source/common/unicode/edits.h @@ -122,7 +122,7 @@ class U_COMMON_API Edits final : public UMemory { * @return *this * @stable ICU 60 */ - Edits &operator=(const Edits &other); + Edits& operator=(const Edits& other) U_LIFETIME_BOUND; /** * Move assignment operator, might leave src empty. @@ -132,7 +132,7 @@ class U_COMMON_API Edits final : public UMemory { * @return *this * @stable ICU 60 */ - Edits &operator=(Edits &&src) noexcept; + Edits& operator=(Edits&& src) noexcept U_LIFETIME_BOUND; /** * Resets the data but may not release memory. @@ -219,7 +219,7 @@ class U_COMMON_API Edits final : public UMemory { * Assignment operator. * @stable ICU 59 */ - Iterator &operator=(const Iterator &other) = default; + Iterator& operator=(const Iterator& other) U_LIFETIME_BOUND = default; /** * Advances the iterator to the next edit. @@ -397,13 +397,13 @@ class U_COMMON_API Edits final : public UMemory { * should not depend on the contents of the return string. * @internal */ - UnicodeString& toString(UnicodeString& appendTo) const; + UnicodeString& toString(UnicodeString& appendTo U_LIFETIME_BOUND) const; #endif // U_HIDE_INTERNAL_API private: friend class Edits; - Iterator(const uint16_t *a, int32_t len, UBool oc, UBool crs); + Iterator(const uint16_t* a U_LIFETIME_BOUND, int32_t len, UBool oc, UBool crs); int32_t readLength(int32_t head); void updateNextIndexes(); @@ -435,7 +435,7 @@ class U_COMMON_API Edits final : public UMemory { * @return an Iterator that merges adjacent changes. * @stable ICU 59 */ - Iterator getCoarseChangesIterator() const { + Iterator getCoarseChangesIterator() const U_LIFETIME_BOUND { return Iterator(array, length, true, true); } @@ -447,7 +447,7 @@ class U_COMMON_API Edits final : public UMemory { * @return an Iterator that merges adjacent changes. * @stable ICU 59 */ - Iterator getCoarseIterator() const { + Iterator getCoarseIterator() const U_LIFETIME_BOUND { return Iterator(array, length, false, true); } @@ -459,7 +459,7 @@ class U_COMMON_API Edits final : public UMemory { * @return an Iterator that separates adjacent changes. * @stable ICU 59 */ - Iterator getFineChangesIterator() const { + Iterator getFineChangesIterator() const U_LIFETIME_BOUND { return Iterator(array, length, true, false); } @@ -470,7 +470,7 @@ class U_COMMON_API Edits final : public UMemory { * @return an Iterator that separates adjacent changes. * @stable ICU 59 */ - Iterator getFineIterator() const { + Iterator getFineIterator() const U_LIFETIME_BOUND { return Iterator(array, length, false, false); } @@ -501,12 +501,12 @@ class U_COMMON_API Edits final : public UMemory { * @return *this, with the merged edits appended * @stable ICU 60 */ - Edits &mergeAndAppend(const Edits &ab, const Edits &bc, UErrorCode &errorCode); + Edits& mergeAndAppend(const Edits& ab, const Edits& bc, UErrorCode& errorCode) U_LIFETIME_BOUND; private: void releaseArray() noexcept; - Edits ©Array(const Edits &other); - Edits &moveArray(Edits &src) noexcept; + Edits& copyArray(const Edits& other) U_LIFETIME_BOUND; + Edits& moveArray(Edits& src) noexcept U_LIFETIME_BOUND; void setLastUnit(int32_t last) { array[length - 1] = static_cast(last); } int32_t lastUnit() const { return length > 0 ? array[length - 1] : 0xffff; } diff --git a/deps/icu-small/source/common/unicode/enumset.h b/deps/icu-small/source/common/unicode/enumset.h index bde8c455c0dd..c5731999e34c 100644 --- a/deps/icu-small/source/common/unicode/enumset.h +++ b/deps/icu-small/source/common/unicode/enumset.h @@ -45,7 +45,8 @@ class EnumSet { inline int32_t get(T toCheck) const { return (fBools & flag(toCheck))?1:0; } inline UBool isValidEnum(T toCheck) const { return (toCheck>=minValue&&toCheck& operator=(const EnumSet& other) { + inline const EnumSet& + operator=(const EnumSet& other) U_LIFETIME_BOUND { fBools = other.fBools; return *this; } diff --git a/deps/icu-small/source/common/unicode/errorcode.h b/deps/icu-small/source/common/unicode/errorcode.h index fe7b5183232c..ee3cff6298f1 100644 --- a/deps/icu-small/source/common/unicode/errorcode.h +++ b/deps/icu-small/source/common/unicode/errorcode.h @@ -91,9 +91,9 @@ class U_COMMON_API ErrorCode: public UMemory { /** Destructor, does nothing. See class documentation for details. @stable ICU 4.2 */ virtual ~ErrorCode(); /** Conversion operator, returns a reference. @stable ICU 4.2 */ - operator UErrorCode & () { return errorCode; } + operator UErrorCode&() U_LIFETIME_BOUND { return errorCode; } /** Conversion operator, returns a pointer. @stable ICU 4.2 */ - operator UErrorCode * () { return &errorCode; } + operator UErrorCode*() U_LIFETIME_BOUND { return &errorCode; } /** Tests for U_SUCCESS(). @stable ICU 4.2 */ UBool isSuccess() const { return U_SUCCESS(errorCode); } /** Tests for U_FAILURE(). @stable ICU 4.2 */ diff --git a/deps/icu-small/source/common/unicode/icuplug.h b/deps/icu-small/source/common/unicode/icuplug.h index c787fcd42664..017b8036dbf9 100644 --- a/deps/icu-small/source/common/unicode/icuplug.h +++ b/deps/icu-small/source/common/unicode/icuplug.h @@ -266,8 +266,8 @@ uplug_setPlugName(UPlugData *plug, const char *name); * @return the name of this plugin * @internal ICU 4.4 Technology Preview */ -U_CAPI const char * U_EXPORT2 -uplug_getPlugName(UPlugData *plug); +U_CAPI const char* U_EXPORT2 +uplug_getPlugName(UPlugData* plug U_LIFETIME_BOUND); /** * Return the symbol name for this plugin, if known. @@ -275,8 +275,8 @@ uplug_getPlugName(UPlugData *plug); * @return the symbol name, or NULL * @internal ICU 4.4 Technology Preview */ -U_CAPI const char * U_EXPORT2 -uplug_getSymbolName(UPlugData *plug); +U_CAPI const char* U_EXPORT2 +uplug_getSymbolName(UPlugData* plug U_LIFETIME_BOUND); /** * Return the library name for this plugin, if known. @@ -285,8 +285,8 @@ uplug_getSymbolName(UPlugData *plug); * @return the library name, or NULL * @internal ICU 4.4 Technology Preview */ -U_CAPI const char * U_EXPORT2 -uplug_getLibraryName(UPlugData *plug, UErrorCode *status); +U_CAPI const char* U_EXPORT2 +uplug_getLibraryName(UPlugData* plug U_LIFETIME_BOUND, UErrorCode* status); /** * Return the library used for this plugin, if known. @@ -324,8 +324,8 @@ uplug_setContext(UPlugData *plug, void *context); * @return configuration string, or else null. * @internal ICU 4.4 Technology Preview */ -U_CAPI const char * U_EXPORT2 -uplug_getConfiguration(UPlugData *plug); +U_CAPI const char* U_EXPORT2 +uplug_getConfiguration(UPlugData* plug U_LIFETIME_BOUND); /** * Return all currently installed plugins, from newest to oldest diff --git a/deps/icu-small/source/common/unicode/idna.h b/deps/icu-small/source/common/unicode/idna.h index 1e36fa771f06..d695e1a09d29 100644 --- a/deps/icu-small/source/common/unicode/idna.h +++ b/deps/icu-small/source/common/unicode/idna.h @@ -116,9 +116,11 @@ class U_COMMON_API IDNA : public UObject { * @return dest * @stable ICU 4.6 */ - virtual UnicodeString & - labelToASCII(const UnicodeString &label, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const = 0; + virtual UnicodeString& + labelToASCII(const UnicodeString& label, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const = 0; /** * Converts a single domain name label into its Unicode form for human-readable display. @@ -138,9 +140,11 @@ class U_COMMON_API IDNA : public UObject { * @return dest * @stable ICU 4.6 */ - virtual UnicodeString & - labelToUnicode(const UnicodeString &label, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const = 0; + virtual UnicodeString& + labelToUnicode(const UnicodeString& label, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const = 0; /** * Converts a whole domain name into its ASCII form for DNS lookup. @@ -162,9 +166,11 @@ class U_COMMON_API IDNA : public UObject { * @return dest * @stable ICU 4.6 */ - virtual UnicodeString & - nameToASCII(const UnicodeString &name, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const = 0; + virtual UnicodeString& + nameToASCII(const UnicodeString& name, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const = 0; /** * Converts a whole domain name into its Unicode form for human-readable display. @@ -184,9 +190,11 @@ class U_COMMON_API IDNA : public UObject { * @return dest * @stable ICU 4.6 */ - virtual UnicodeString & - nameToUnicode(const UnicodeString &name, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const = 0; + virtual UnicodeString& + nameToUnicode(const UnicodeString& name, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const = 0; // UTF-8 versions of the processing methods ---------------------------- *** @@ -201,7 +209,6 @@ class U_COMMON_API IDNA : public UObject { * pass the U_SUCCESS() test, or else the function returns * immediately. Check for U_FAILURE() on output or use with * function chaining. (See User Guide for details.) - * @return dest * @stable ICU 4.6 */ virtual void @@ -219,7 +226,6 @@ class U_COMMON_API IDNA : public UObject { * pass the U_SUCCESS() test, or else the function returns * immediately. Check for U_FAILURE() on output or use with * function chaining. (See User Guide for details.) - * @return dest * @stable ICU 4.6 */ virtual void @@ -237,7 +243,6 @@ class U_COMMON_API IDNA : public UObject { * pass the U_SUCCESS() test, or else the function returns * immediately. Check for U_FAILURE() on output or use with * function chaining. (See User Guide for details.) - * @return dest * @stable ICU 4.6 */ virtual void @@ -255,7 +260,6 @@ class U_COMMON_API IDNA : public UObject { * pass the U_SUCCESS() test, or else the function returns * immediately. Check for U_FAILURE() on output or use with * function chaining. (See User Guide for details.) - * @return dest * @stable ICU 4.6 */ virtual void diff --git a/deps/icu-small/source/common/unicode/localebuilder.h b/deps/icu-small/source/common/unicode/localebuilder.h index a58edf8de633..c3a66dfd5967 100644 --- a/deps/icu-small/source/common/unicode/localebuilder.h +++ b/deps/icu-small/source/common/unicode/localebuilder.h @@ -87,7 +87,7 @@ class U_COMMON_API LocaleBuilder : public UObject { * * @stable ICU 64 */ - LocaleBuilder& setLocale(const Locale& locale); + LocaleBuilder& setLocale(const Locale& locale) U_LIFETIME_BOUND; /** * Resets the LocaleBuilder to match the provided IETF BCP 47 language tag. @@ -104,7 +104,7 @@ class U_COMMON_API LocaleBuilder : public UObject { * @return This builder. * @stable ICU 64 */ - LocaleBuilder& setLanguageTag(StringPiece tag); + LocaleBuilder& setLanguageTag(StringPiece tag) U_LIFETIME_BOUND; /** * Sets the language. If language is the empty string, the @@ -119,7 +119,7 @@ class U_COMMON_API LocaleBuilder : public UObject { * @return This builder. * @stable ICU 64 */ - LocaleBuilder& setLanguage(StringPiece language); + LocaleBuilder& setLanguage(StringPiece language) U_LIFETIME_BOUND; /** * Sets the script. If script is the empty string, the script in @@ -135,7 +135,7 @@ class U_COMMON_API LocaleBuilder : public UObject { * @return This builder. * @stable ICU 64 */ - LocaleBuilder& setScript(StringPiece script); + LocaleBuilder& setScript(StringPiece script) U_LIFETIME_BOUND; /** * Sets the region. If region is the empty string, the region in this @@ -154,7 +154,7 @@ class U_COMMON_API LocaleBuilder : public UObject { * @return This builder. * @stable ICU 64 */ - LocaleBuilder& setRegion(StringPiece region); + LocaleBuilder& setRegion(StringPiece region) U_LIFETIME_BOUND; /** * Sets the variant. If variant is the empty string, the variant in this @@ -175,7 +175,7 @@ class U_COMMON_API LocaleBuilder : public UObject { * @return This builder. * @stable ICU 64 */ - LocaleBuilder& setVariant(StringPiece variant); + LocaleBuilder& setVariant(StringPiece variant) U_LIFETIME_BOUND; /** * Sets the extension for the given key. If the value is the empty string, @@ -196,7 +196,7 @@ class U_COMMON_API LocaleBuilder : public UObject { * @return This builder. * @stable ICU 64 */ - LocaleBuilder& setExtension(char key, StringPiece value); + LocaleBuilder& setExtension(char key, StringPiece value) U_LIFETIME_BOUND; /** * Sets the Unicode locale keyword type for the given key. If the type @@ -216,8 +216,7 @@ class U_COMMON_API LocaleBuilder : public UObject { * @return This builder. * @stable ICU 64 */ - LocaleBuilder& setUnicodeLocaleKeyword( - StringPiece key, StringPiece type); + LocaleBuilder& setUnicodeLocaleKeyword(StringPiece key, StringPiece type) U_LIFETIME_BOUND; /** * Adds a unicode locale attribute, if not already present, otherwise @@ -229,7 +228,7 @@ class U_COMMON_API LocaleBuilder : public UObject { * @return This builder. * @stable ICU 64 */ - LocaleBuilder& addUnicodeLocaleAttribute(StringPiece attribute); + LocaleBuilder& addUnicodeLocaleAttribute(StringPiece attribute) U_LIFETIME_BOUND; /** * Removes a unicode locale attribute, if present, otherwise has no @@ -242,7 +241,7 @@ class U_COMMON_API LocaleBuilder : public UObject { * @return This builder. * @stable ICU 64 */ - LocaleBuilder& removeUnicodeLocaleAttribute(StringPiece attribute); + LocaleBuilder& removeUnicodeLocaleAttribute(StringPiece attribute) U_LIFETIME_BOUND; /** * Resets the builder to its initial, empty state. @@ -251,7 +250,7 @@ class U_COMMON_API LocaleBuilder : public UObject { * @return this builder * @stable ICU 64 */ - LocaleBuilder& clear(); + LocaleBuilder& clear() U_LIFETIME_BOUND; /** * Resets the extensions to their initial, empty state. @@ -260,7 +259,7 @@ class U_COMMON_API LocaleBuilder : public UObject { * @return this builder * @stable ICU 64 */ - LocaleBuilder& clearExtensions(); + LocaleBuilder& clearExtensions() U_LIFETIME_BOUND; /** * Returns an instance of Locale created from the fields set diff --git a/deps/icu-small/source/common/unicode/localematcher.h b/deps/icu-small/source/common/unicode/localematcher.h index e16f1a31ca50..0cc8b2738e08 100644 --- a/deps/icu-small/source/common/unicode/localematcher.h +++ b/deps/icu-small/source/common/unicode/localematcher.h @@ -216,7 +216,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @param src Result to move contents from. * @stable ICU 65 */ - Result &operator=(Result &&src) noexcept; + Result& operator=(Result&& src) noexcept U_LIFETIME_BOUND; /** * Returns the best-matching desired locale. @@ -225,7 +225,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return the best-matching desired locale, or nullptr. * @stable ICU 65 */ - inline const Locale *getDesiredLocale() const { return desiredLocale; } + inline const Locale* getDesiredLocale() const U_LIFETIME_BOUND { return desiredLocale; } /** * Returns the best-matching supported locale. @@ -236,7 +236,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return the best-matching supported locale, or nullptr. * @stable ICU 65 */ - inline const Locale *getSupportedLocale() const { return supportedLocale; } + inline const Locale* getSupportedLocale() const U_LIFETIME_BOUND { return supportedLocale; } /** * Returns the index of the best-matching desired locale in the input Iterable order. @@ -303,7 +303,6 @@ class U_COMMON_API LocaleMatcher : public UMemory { /** * Constructs a builder used in chaining parameters for building a LocaleMatcher. * - * @return a new Builder object * @stable ICU 65 */ Builder() {} @@ -331,7 +330,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @param src Builder to move contents from. * @stable ICU 65 */ - Builder &operator=(Builder &&src) noexcept; + Builder& operator=(Builder&& src) noexcept U_LIFETIME_BOUND; /** * Parses an Accept-Language string @@ -344,7 +343,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return this Builder object * @stable ICU 65 */ - Builder &setSupportedLocalesFromListString(StringPiece locales); + Builder& setSupportedLocalesFromListString(StringPiece locales) U_LIFETIME_BOUND; /** * Copies the supported locales, preserving iteration order. @@ -355,7 +354,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return this Builder object * @stable ICU 65 */ - Builder &setSupportedLocales(Locale::Iterator &locales); + Builder& setSupportedLocales(Locale::Iterator& locales) U_LIFETIME_BOUND; /** * Copies the supported locales from the begin/end range, preserving iteration order. @@ -370,8 +369,8 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return this Builder object * @stable ICU 65 */ - template - Builder &setSupportedLocales(Iter begin, Iter end) { + template + Builder& setSupportedLocales(Iter begin, Iter end) U_LIFETIME_BOUND { if (U_FAILURE(errorCode_)) { return *this; } clearSupportedLocales(); while (begin != end) { @@ -395,8 +394,9 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return this Builder object * @stable ICU 65 */ - template - Builder &setSupportedLocalesViaConverter(Iter begin, Iter end, Conv converter) { + template + Builder& setSupportedLocalesViaConverter(Iter begin, Iter end, + Conv converter) U_LIFETIME_BOUND { if (U_FAILURE(errorCode_)) { return *this; } clearSupportedLocales(); while (begin != end) { @@ -413,7 +413,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return this Builder object * @stable ICU 65 */ - Builder &addSupportedLocale(const Locale &locale); + Builder& addSupportedLocale(const Locale& locale) U_LIFETIME_BOUND; /** * Sets no default locale. @@ -423,7 +423,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * * @stable ICU 68 */ - Builder &setNoDefaultLocale(); + Builder& setNoDefaultLocale() U_LIFETIME_BOUND; /** * Sets the default locale; if nullptr, or if it is not set explicitly, @@ -435,7 +435,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return this Builder object * @stable ICU 65 */ - Builder &setDefaultLocale(const Locale *defaultLocale); + Builder& setDefaultLocale(const Locale* defaultLocale) U_LIFETIME_BOUND; /** * If ULOCMATCH_FAVOR_SCRIPT, then the language differences are smaller than script @@ -447,7 +447,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return this Builder object * @stable ICU 65 */ - Builder &setFavorSubtag(ULocMatchFavorSubtag subtag); + Builder& setFavorSubtag(ULocMatchFavorSubtag subtag) U_LIFETIME_BOUND; /** * Option for whether all desired locales are treated equally or @@ -457,7 +457,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return this Builder object * @stable ICU 65 */ - Builder &setDemotionPerDesiredLocale(ULocMatchDemotion demotion); + Builder& setDemotionPerDesiredLocale(ULocMatchDemotion demotion) U_LIFETIME_BOUND; /** * Option for whether to include or ignore one-way (fallback) match data. @@ -467,7 +467,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return this Builder object * @stable ICU 67 */ - Builder &setDirection(ULocMatchDirection matchDirection) { + Builder& setDirection(ULocMatchDirection matchDirection) U_LIFETIME_BOUND { if (U_SUCCESS(errorCode_)) { direction_ = matchDirection; } @@ -495,7 +495,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return this Builder object * @stable ICU 68 */ - Builder &setMaxDistance(const Locale &desired, const Locale &supported); + Builder& setMaxDistance(const Locale& desired, const Locale& supported) U_LIFETIME_BOUND; /** * Sets the UErrorCode if an error occurred while setting parameters. @@ -566,7 +566,7 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return *this * @stable ICU 65 */ - LocaleMatcher &operator=(LocaleMatcher &&src) noexcept; + LocaleMatcher& operator=(LocaleMatcher&& src) noexcept U_LIFETIME_BOUND; /** * Returns the supported locale which best matches the desired locale. @@ -578,7 +578,8 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return the best-matching supported locale. * @stable ICU 65 */ - const Locale *getBestMatch(const Locale &desiredLocale, UErrorCode &errorCode) const; + const Locale* getBestMatch(const Locale& desiredLocale, + UErrorCode& errorCode) const U_LIFETIME_BOUND; /** * Returns the supported locale which best matches one of the desired locales. @@ -590,7 +591,8 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return the best-matching supported locale. * @stable ICU 65 */ - const Locale *getBestMatch(Locale::Iterator &desiredLocales, UErrorCode &errorCode) const; + const Locale* getBestMatch(Locale::Iterator& desiredLocales, + UErrorCode& errorCode) const U_LIFETIME_BOUND; /** * Parses an Accept-Language string @@ -606,7 +608,8 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return the best-matching supported locale. * @stable ICU 65 */ - const Locale *getBestMatchForListString(StringPiece desiredLocaleList, UErrorCode &errorCode) const; + const Locale* getBestMatchForListString(StringPiece desiredLocaleList, + UErrorCode& errorCode) const U_LIFETIME_BOUND; /** * Returns the best match between the desired locale and the supported locales. @@ -620,7 +623,8 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return the best-matching pair of the desired and a supported locale. * @stable ICU 65 */ - Result getBestMatchResult(const Locale &desiredLocale, UErrorCode &errorCode) const; + Result getBestMatchResult(const Locale& desiredLocale U_LIFETIME_BOUND, + UErrorCode& errorCode) const U_LIFETIME_BOUND; /** * Returns the best match between the desired and supported locales. @@ -634,7 +638,8 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @return the best-matching pair of a desired and a supported locale. * @stable ICU 65 */ - Result getBestMatchResult(Locale::Iterator &desiredLocales, UErrorCode &errorCode) const; + Result getBestMatchResult(Locale::Iterator& desiredLocales, + UErrorCode& errorCode) const U_LIFETIME_BOUND; /** * Returns true if the pair of locales matches acceptably. diff --git a/deps/icu-small/source/common/unicode/localpointer.h b/deps/icu-small/source/common/unicode/localpointer.h index 1803222d8d7a..a80654875394 100644 --- a/deps/icu-small/source/common/unicode/localpointer.h +++ b/deps/icu-small/source/common/unicode/localpointer.h @@ -117,19 +117,19 @@ class LocalPointerBase { * @return the pointer value * @stable ICU 4.4 */ - T *getAlias() const { return ptr; } + T* getAlias() const U_LIFETIME_BOUND { return ptr; } /** * Access without ownership change. * @return the pointer value as a reference * @stable ICU 4.4 */ - T &operator*() const { return *ptr; } + T& operator*() const U_LIFETIME_BOUND { return *ptr; } /** * Access without ownership change. * @return the pointer value * @stable ICU 4.4 */ - T *operator->() const { return ptr; } + T* operator->() const U_LIFETIME_BOUND { return ptr; } /** * Gives up ownership; the internal pointer becomes nullptr. * @return the pointer value; @@ -250,7 +250,7 @@ class LocalPointer : public LocalPointerBase { * @return *this * @stable ICU 56 */ - LocalPointer &operator=(LocalPointer &&src) noexcept { + LocalPointer& operator=(LocalPointer&& src) noexcept U_LIFETIME_BOUND { delete LocalPointerBase::ptr; LocalPointerBase::ptr=src.ptr; src.ptr=nullptr; @@ -265,7 +265,7 @@ class LocalPointer : public LocalPointerBase { * @return *this * @stable ICU 64 */ - LocalPointer &operator=(std::unique_ptr &&p) noexcept { + LocalPointer& operator=(std::unique_ptr&& p) noexcept U_LIFETIME_BOUND { adoptInstead(p.release()); return *this; } @@ -425,7 +425,7 @@ class LocalArray : public LocalPointerBase { * @return *this * @stable ICU 56 */ - LocalArray &operator=(LocalArray &&src) noexcept { + LocalArray& operator=(LocalArray&& src) noexcept U_LIFETIME_BOUND { delete[] LocalPointerBase::ptr; LocalPointerBase::ptr=src.ptr; src.ptr=nullptr; @@ -440,7 +440,7 @@ class LocalArray : public LocalPointerBase { * @return *this * @stable ICU 64 */ - LocalArray &operator=(std::unique_ptr &&p) noexcept { + LocalArray& operator=(std::unique_ptr&& p) noexcept U_LIFETIME_BOUND { adoptInstead(p.release()); return *this; } @@ -507,7 +507,7 @@ class LocalArray : public LocalPointerBase { * @return reference to the array item * @stable ICU 4.4 */ - T &operator[](ptrdiff_t i) const { return LocalPointerBase::ptr[i]; } + T& operator[](ptrdiff_t i) const U_LIFETIME_BOUND { return LocalPointerBase::ptr[i]; } /** * Conversion operator to a C++11 std::unique_ptr. @@ -571,14 +571,15 @@ class LocalOpenPointer : public LocalPointerBase { explicit LocalOpenPointer(std::unique_ptr &&p) : LocalPointerBase(p.release()) {} ~LocalOpenPointer() { if (ptr != nullptr) { closeFunction(ptr); } } - LocalOpenPointer &operator=(LocalOpenPointer &&src) noexcept { + LocalOpenPointer& operator=(LocalOpenPointer&& src) noexcept U_LIFETIME_BOUND { if (ptr != nullptr) { closeFunction(ptr); } LocalPointerBase::ptr=src.ptr; src.ptr=nullptr; return *this; } /* TODO: Be agnostic of the deleter function signature from the user-provided std::unique_ptr? */ - LocalOpenPointer &operator=(std::unique_ptr &&p) { + LocalOpenPointer& + operator=(std::unique_ptr&& p) U_LIFETIME_BOUND { adoptInstead(p.release()); return *this; } diff --git a/deps/icu-small/source/common/unicode/locdspnm.h b/deps/icu-small/source/common/unicode/locdspnm.h index 4f06f857044c..5febce2f7a9f 100644 --- a/deps/icu-small/source/common/unicode/locdspnm.h +++ b/deps/icu-small/source/common/unicode/locdspnm.h @@ -87,7 +87,7 @@ class U_COMMON_API LocaleDisplayNames : public UObject { * @return the display locale * @stable ICU 4.4 */ - virtual const Locale& getLocale() const = 0; + virtual const Locale& getLocale() const U_LIFETIME_BOUND = 0; /** * Returns the dialect handling used in the display names. @@ -113,7 +113,7 @@ class U_COMMON_API LocaleDisplayNames : public UObject { * @stable ICU 4.4 */ virtual UnicodeString& localeDisplayName(const Locale& locale, - UnicodeString& result) const = 0; + UnicodeString& result U_LIFETIME_BOUND) const = 0; /** * Returns the display name of the provided locale id. @@ -123,7 +123,7 @@ class U_COMMON_API LocaleDisplayNames : public UObject { * @stable ICU 4.4 */ virtual UnicodeString& localeDisplayName(const char* localeId, - UnicodeString& result) const = 0; + UnicodeString& result U_LIFETIME_BOUND) const = 0; // names for components of a locale id /** @@ -134,7 +134,7 @@ class U_COMMON_API LocaleDisplayNames : public UObject { * @stable ICU 4.4 */ virtual UnicodeString& languageDisplayName(const char* lang, - UnicodeString& result) const = 0; + UnicodeString& result U_LIFETIME_BOUND) const = 0; /** * Returns the display name of the provided script code. @@ -144,7 +144,7 @@ class U_COMMON_API LocaleDisplayNames : public UObject { * @stable ICU 4.4 */ virtual UnicodeString& scriptDisplayName(const char* script, - UnicodeString& result) const = 0; + UnicodeString& result U_LIFETIME_BOUND) const = 0; /** * Returns the display name of the provided script code. @@ -154,7 +154,7 @@ class U_COMMON_API LocaleDisplayNames : public UObject { * @stable ICU 4.4 */ virtual UnicodeString& scriptDisplayName(UScriptCode scriptCode, - UnicodeString& result) const = 0; + UnicodeString& result U_LIFETIME_BOUND) const = 0; /** * Returns the display name of the provided region code. @@ -164,7 +164,7 @@ class U_COMMON_API LocaleDisplayNames : public UObject { * @stable ICU 4.4 */ virtual UnicodeString& regionDisplayName(const char* region, - UnicodeString& result) const = 0; + UnicodeString& result U_LIFETIME_BOUND) const = 0; /** * Returns the display name of the provided variant. @@ -174,7 +174,7 @@ class U_COMMON_API LocaleDisplayNames : public UObject { * @stable ICU 4.4 */ virtual UnicodeString& variantDisplayName(const char* variant, - UnicodeString& result) const = 0; + UnicodeString& result U_LIFETIME_BOUND) const = 0; /** * Returns the display name of the provided locale key. @@ -184,7 +184,7 @@ class U_COMMON_API LocaleDisplayNames : public UObject { * @stable ICU 4.4 */ virtual UnicodeString& keyDisplayName(const char* key, - UnicodeString& result) const = 0; + UnicodeString& result U_LIFETIME_BOUND) const = 0; /** * Returns the display name of the provided value (used with the provided key). @@ -195,7 +195,7 @@ class U_COMMON_API LocaleDisplayNames : public UObject { * @stable ICU 4.4 */ virtual UnicodeString& keyValueDisplayName(const char* key, const char* value, - UnicodeString& result) const = 0; + UnicodeString& result U_LIFETIME_BOUND) const = 0; }; inline LocaleDisplayNames* LocaleDisplayNames::createInstance(const Locale& locale) { diff --git a/deps/icu-small/source/common/unicode/locid.h b/deps/icu-small/source/common/unicode/locid.h index e702ff9c582d..e331470d52cc 100644 --- a/deps/icu-small/source/common/unicode/locid.h +++ b/deps/icu-small/source/common/unicode/locid.h @@ -311,7 +311,7 @@ class U_COMMON_API_CLASS Locale : public UObject { * @return *this * @stable ICU 2.0 */ - U_COMMON_API Locale& operator=(const Locale& other); + U_COMMON_API Locale& operator=(const Locale& other) U_LIFETIME_BOUND; /** * Move assignment operator; might leave source in bogus state. @@ -322,7 +322,7 @@ class U_COMMON_API_CLASS Locale : public UObject { * @return *this * @stable ICU 63 */ - U_COMMON_API Locale& operator=(Locale&& other) noexcept; + U_COMMON_API Locale& operator=(Locale&& other) noexcept U_LIFETIME_BOUND; /** * Checks if two locale keys are the same. @@ -471,7 +471,7 @@ class U_COMMON_API_CLASS Locale : public UObject { * @return An alias to the code * @stable ICU 2.0 */ - U_COMMON_API const char* getLanguage() const; + U_COMMON_API const char* getLanguage() const U_LIFETIME_BOUND; /** * Returns the locale's ISO-15924 abbreviation script code. @@ -480,21 +480,21 @@ class U_COMMON_API_CLASS Locale : public UObject { * @see uscript_getCode * @stable ICU 2.8 */ - U_COMMON_API const char* getScript() const; + U_COMMON_API const char* getScript() const U_LIFETIME_BOUND; /** * Returns the locale's ISO-3166 country code. * @return An alias to the code * @stable ICU 2.0 */ - U_COMMON_API const char* getCountry() const; + U_COMMON_API const char* getCountry() const U_LIFETIME_BOUND; /** * Returns the locale's variant code. * @return An alias to the code * @stable ICU 2.0 */ - U_COMMON_API const char* getVariant() const; + U_COMMON_API const char* getVariant() const U_LIFETIME_BOUND; /** * Returns the programmatic name of the entire locale, with the language, @@ -504,7 +504,7 @@ class U_COMMON_API_CLASS Locale : public UObject { * @return A pointer to "name". * @stable ICU 2.0 */ - U_COMMON_API const char* getName() const; + U_COMMON_API const char* getName() const U_LIFETIME_BOUND; /** * Returns the programmatic name of the entire locale as getName() would return, @@ -513,7 +513,7 @@ class U_COMMON_API_CLASS Locale : public UObject { * @see getName * @stable ICU 2.8 */ - U_COMMON_API const char* getBaseName() const; + U_COMMON_API const char* getBaseName() const U_LIFETIME_BOUND; /** * Add the likely subtags for this Locale, per the algorithm described @@ -837,7 +837,7 @@ class U_COMMON_API_CLASS Locale : public UObject { * @return A reference to "dispLang". * @stable ICU 2.0 */ - U_COMMON_API UnicodeString& getDisplayLanguage(UnicodeString& dispLang) const; + U_COMMON_API UnicodeString& getDisplayLanguage(UnicodeString& dispLang U_LIFETIME_BOUND) const; /** * Fills in "dispLang" with the name of this locale's language in a format suitable for @@ -853,7 +853,7 @@ class U_COMMON_API_CLASS Locale : public UObject { * @stable ICU 2.0 */ U_COMMON_API UnicodeString& getDisplayLanguage(const Locale& displayLocale, - UnicodeString& dispLang) const; + UnicodeString& dispLang U_LIFETIME_BOUND) const; /** * Fills in "dispScript" with the name of this locale's script in a format suitable @@ -864,7 +864,7 @@ class U_COMMON_API_CLASS Locale : public UObject { * @return A reference to "dispScript". * @stable ICU 2.8 */ - U_COMMON_API UnicodeString& getDisplayScript(UnicodeString& dispScript) const; + U_COMMON_API UnicodeString& getDisplayScript(UnicodeString& dispScript U_LIFETIME_BOUND) const; /** * Fills in "dispScript" with the name of this locale's country in a format suitable @@ -881,7 +881,7 @@ class U_COMMON_API_CLASS Locale : public UObject { * @stable ICU 2.8 */ U_COMMON_API UnicodeString& getDisplayScript(const Locale& displayLocale, - UnicodeString& dispScript) const; + UnicodeString& dispScript U_LIFETIME_BOUND) const; /** * Fills in "dispCountry" with the name of this locale's country in a format suitable @@ -892,7 +892,8 @@ class U_COMMON_API_CLASS Locale : public UObject { * @return A reference to "dispCountry". * @stable ICU 2.0 */ - U_COMMON_API UnicodeString& getDisplayCountry(UnicodeString& dispCountry) const; + U_COMMON_API UnicodeString& + getDisplayCountry(UnicodeString& dispCountry U_LIFETIME_BOUND) const; /** * Fills in "dispCountry" with the name of this locale's country in a format suitable @@ -908,8 +909,9 @@ class U_COMMON_API_CLASS Locale : public UObject { * @return A reference to "dispCountry". * @stable ICU 2.0 */ - U_COMMON_API UnicodeString& getDisplayCountry(const Locale& displayLocale, - UnicodeString& dispCountry) const; + U_COMMON_API UnicodeString& + getDisplayCountry(const Locale& displayLocale, + UnicodeString& dispCountry U_LIFETIME_BOUND) const; /** * Fills in "dispVar" with the name of this locale's variant code in a format suitable @@ -918,7 +920,7 @@ class U_COMMON_API_CLASS Locale : public UObject { * @return A reference to "dispVar". * @stable ICU 2.0 */ - U_COMMON_API UnicodeString& getDisplayVariant(UnicodeString& dispVar) const; + U_COMMON_API UnicodeString& getDisplayVariant(UnicodeString& dispVar U_LIFETIME_BOUND) const; /** * Fills in "dispVar" with the name of this locale's variant code in a format @@ -929,7 +931,7 @@ class U_COMMON_API_CLASS Locale : public UObject { * @stable ICU 2.0 */ U_COMMON_API UnicodeString& getDisplayVariant(const Locale& displayLocale, - UnicodeString& dispVar) const; + UnicodeString& dispVar U_LIFETIME_BOUND) const; /** * Fills in "name" with the name of this locale in a format suitable for user display @@ -942,7 +944,7 @@ class U_COMMON_API_CLASS Locale : public UObject { * @return A reference to "name". * @stable ICU 2.0 */ - U_COMMON_API UnicodeString& getDisplayName(UnicodeString& name) const; + U_COMMON_API UnicodeString& getDisplayName(UnicodeString& name U_LIFETIME_BOUND) const; /** * Fills in "name" with the name of this locale in a format suitable for user display @@ -956,7 +958,8 @@ class U_COMMON_API_CLASS Locale : public UObject { * @return A reference to "name". * @stable ICU 2.0 */ - U_COMMON_API UnicodeString& getDisplayName(const Locale& displayLocale, UnicodeString& name) const; + U_COMMON_API UnicodeString& getDisplayName(const Locale& displayLocale, + UnicodeString& name U_LIFETIME_BOUND) const; /** * Generates a hash code for the locale. @@ -1150,8 +1153,8 @@ class U_COMMON_API_CLASS Locale : public UObject { * @param cLocaleID The new locale name. * @param canonicalize whether to call uloc_canonicalize on cLocaleID */ - Locale& init(const char* localeID, UBool canonicalize); - Locale& init(StringPiece localeID, UBool canonicalize); + Locale& init(const char* localeID, UBool canonicalize) U_LIFETIME_BOUND; + Locale& init(StringPiece localeID, UBool canonicalize) U_LIFETIME_BOUND; /* * Internal constructor to allow construction of a locale object with @@ -1192,11 +1195,13 @@ class U_COMMON_API_CLASS Locale : public UObject { sizeof region - sizeof variantBegin]; - const char* getLanguage() const { return language; } - const char* getScript() const { return script; } - const char* getRegion() const { return region; } - const char* getVariant() const { return variantBegin == 0 ? "" : getBaseName() + variantBegin; } - const char* getBaseName() const { return baseName; } + const char* getLanguage() const U_LIFETIME_BOUND { return language; } + const char* getScript() const U_LIFETIME_BOUND { return script; } + const char* getRegion() const U_LIFETIME_BOUND { return region; } + const char* getVariant() const U_LIFETIME_BOUND { + return variantBegin == 0 ? "" : getBaseName() + variantBegin; + } + const char* getBaseName() const U_LIFETIME_BOUND { return baseName; } // Doesn't inherit from UMemory, shouldn't be heap allocated. static void* U_EXPORT2 operator new(size_t) noexcept = delete; @@ -1237,12 +1242,12 @@ class U_COMMON_API_CLASS Locale : public UObject { char region[ULOC_COUNTRY_CAPACITY]; Alloc* ptr; - const char* getLanguage() const { return language; } - const char* getScript() const { return script; } - const char* getRegion() const { return region; } - const char* getVariant() const; - const char* getFullName() const; - const char* getBaseName() const; + const char* getLanguage() const U_LIFETIME_BOUND { return language; } + const char* getScript() const U_LIFETIME_BOUND { return script; } + const char* getRegion() const U_LIFETIME_BOUND { return region; } + const char* getVariant() const U_LIFETIME_BOUND; + const char* getFullName() const U_LIFETIME_BOUND; + const char* getBaseName() const U_LIFETIME_BOUND; // Doesn't inherit from UMemory, shouldn't be heap allocated. static void* U_EXPORT2 operator new(size_t) noexcept = delete; @@ -1254,8 +1259,8 @@ class U_COMMON_API_CLASS Locale : public UObject { int32_t variantBegin); ~Heap(); - Heap& operator=(const Heap& other); - Heap& operator=(Heap&& other) noexcept; + Heap& operator=(const Heap& other) U_LIFETIME_BOUND; + Heap& operator=(Heap&& other) noexcept U_LIFETIME_BOUND; }; static_assert(sizeof(Heap) <= sizeof(Nest)); @@ -1283,15 +1288,15 @@ class U_COMMON_API_CLASS Locale : public UObject { Payload(const Payload& other); Payload(Payload&& other) noexcept; - Payload& operator=(const Payload& other); - Payload& operator=(Payload&& other) noexcept; + Payload& operator=(const Payload& other) U_LIFETIME_BOUND; + Payload& operator=(Payload&& other) noexcept U_LIFETIME_BOUND; void setToBogus(); bool isBogus() const { return type == eBOGUS; } - template T& emplace(Args&&... args); + template T& emplace(Args&&... args) U_LIFETIME_BOUND; - template T* get(); + template T* get() U_LIFETIME_BOUND; template auto visit(BogusFn bogusFn, NestFn nestFn, HeapFn heapFn, Args... args) const; @@ -1307,7 +1312,7 @@ class U_COMMON_API_CLASS Locale : public UObject { */ template - const char* getField() const; + const char* getField() const U_LIFETIME_BOUND; static const Locale &getLocale(int locid); diff --git a/deps/icu-small/source/common/unicode/messagepattern.h b/deps/icu-small/source/common/unicode/messagepattern.h index db36ede7274c..4053f5112a63 100644 --- a/deps/icu-small/source/common/unicode/messagepattern.h +++ b/deps/icu-small/source/common/unicode/messagepattern.h @@ -415,7 +415,7 @@ class U_COMMON_API MessagePattern : public UObject { * @return *this=other * @stable ICU 4.8 */ - MessagePattern &operator=(const MessagePattern &other); + MessagePattern& operator=(const MessagePattern& other) U_LIFETIME_BOUND; /** * Destructor. @@ -440,8 +440,9 @@ class U_COMMON_API MessagePattern : public UObject { * @throws NumberFormatException if a number could not be parsed * @stable ICU 4.8 */ - MessagePattern &parse(const UnicodeString &pattern, - UParseError *parseError, UErrorCode &errorCode); + MessagePattern& parse(const UnicodeString& pattern, + UParseError* parseError, + UErrorCode& errorCode) U_LIFETIME_BOUND; /** * Parses a ChoiceFormat pattern string. @@ -460,8 +461,9 @@ class U_COMMON_API MessagePattern : public UObject { * @throws NumberFormatException if a number could not be parsed * @stable ICU 4.8 */ - MessagePattern &parseChoiceStyle(const UnicodeString &pattern, - UParseError *parseError, UErrorCode &errorCode); + MessagePattern& parseChoiceStyle(const UnicodeString& pattern, + UParseError* parseError, + UErrorCode& errorCode) U_LIFETIME_BOUND; /** * Parses a PluralFormat pattern string. @@ -480,8 +482,9 @@ class U_COMMON_API MessagePattern : public UObject { * @throws NumberFormatException if a number could not be parsed * @stable ICU 4.8 */ - MessagePattern &parsePluralStyle(const UnicodeString &pattern, - UParseError *parseError, UErrorCode &errorCode); + MessagePattern& parsePluralStyle(const UnicodeString& pattern, + UParseError* parseError, + UErrorCode& errorCode) U_LIFETIME_BOUND; /** * Parses a SelectFormat pattern string. @@ -500,8 +503,9 @@ class U_COMMON_API MessagePattern : public UObject { * @throws NumberFormatException if a number could not be parsed * @stable ICU 4.8 */ - MessagePattern &parseSelectStyle(const UnicodeString &pattern, - UParseError *parseError, UErrorCode &errorCode); + MessagePattern& parseSelectStyle(const UnicodeString& pattern, + UParseError* parseError, + UErrorCode& errorCode) U_LIFETIME_BOUND; /** * Clears this MessagePattern. @@ -558,7 +562,7 @@ class U_COMMON_API MessagePattern : public UObject { * @return the parsed pattern string (null if none was parsed). * @stable ICU 4.8 */ - const UnicodeString &getPatternString() const { + const UnicodeString& getPatternString() const U_LIFETIME_BOUND { return msg; } @@ -623,7 +627,7 @@ class U_COMMON_API MessagePattern : public UObject { * @return the i-th pattern "part". * @stable ICU 4.8 */ - const Part &getPart(int32_t i) const { + const Part& getPart(int32_t i) const U_LIFETIME_BOUND { return parts[i]; } @@ -656,7 +660,7 @@ class U_COMMON_API MessagePattern : public UObject { * @return the substring associated with part. * @stable ICU 4.8 */ - UnicodeString getSubstring(const Part &part) const { + UnicodeString getSubstring(const Part& part) const U_LIFETIME_BOUND { return msg.tempSubString(part.index, part.length); } diff --git a/deps/icu-small/source/common/unicode/normalizer2.h b/deps/icu-small/source/common/unicode/normalizer2.h index 01271623f3b9..aa72a4634067 100644 --- a/deps/icu-small/source/common/unicode/normalizer2.h +++ b/deps/icu-small/source/common/unicode/normalizer2.h @@ -236,10 +236,10 @@ class U_COMMON_API Normalizer2 : public UObject { * @return dest * @stable ICU 4.4 */ - virtual UnicodeString & - normalize(const UnicodeString &src, - UnicodeString &dest, - UErrorCode &errorCode) const = 0; + virtual UnicodeString& + normalize(const UnicodeString& src, + UnicodeString& dest U_LIFETIME_BOUND, + UErrorCode& errorCode) const = 0; /** * Normalizes a UTF-8 string and optionally records how source substrings @@ -281,10 +281,10 @@ class U_COMMON_API Normalizer2 : public UObject { * @return first * @stable ICU 4.4 */ - virtual UnicodeString & - normalizeSecondAndAppend(UnicodeString &first, - const UnicodeString &second, - UErrorCode &errorCode) const = 0; + virtual UnicodeString& + normalizeSecondAndAppend(UnicodeString& first U_LIFETIME_BOUND, + const UnicodeString& second, + UErrorCode& errorCode) const = 0; /** * Appends the second string to the first string * (merging them at the boundary) and returns the first string. @@ -299,10 +299,10 @@ class U_COMMON_API Normalizer2 : public UObject { * @return first * @stable ICU 4.4 */ - virtual UnicodeString & - append(UnicodeString &first, - const UnicodeString &second, - UErrorCode &errorCode) const = 0; + virtual UnicodeString& + append(UnicodeString& first U_LIFETIME_BOUND, + const UnicodeString& second, + UErrorCode& errorCode) const = 0; /** * Gets the decomposition mapping of c. @@ -528,7 +528,8 @@ class U_COMMON_API FilteredNormalizer2 : public Normalizer2 { * @param filterSet UnicodeSet which determines the characters to be normalized * @stable ICU 4.4 */ - FilteredNormalizer2(const Normalizer2 &n2, const UnicodeSet &filterSet) : + FilteredNormalizer2(const Normalizer2& n2 U_LIFETIME_BOUND, + const UnicodeSet& filterSet U_LIFETIME_BOUND) : norm2(n2), set(filterSet) {} /** @@ -550,10 +551,10 @@ class U_COMMON_API FilteredNormalizer2 : public Normalizer2 { * @return dest * @stable ICU 4.4 */ - virtual UnicodeString & - normalize(const UnicodeString &src, - UnicodeString &dest, - UErrorCode &errorCode) const override; + virtual UnicodeString& + normalize(const UnicodeString& src, + UnicodeString& dest U_LIFETIME_BOUND, + UErrorCode& errorCode) const override; /** * Normalizes a UTF-8 string and optionally records how source substrings @@ -595,10 +596,10 @@ class U_COMMON_API FilteredNormalizer2 : public Normalizer2 { * @return first * @stable ICU 4.4 */ - virtual UnicodeString & - normalizeSecondAndAppend(UnicodeString &first, - const UnicodeString &second, - UErrorCode &errorCode) const override; + virtual UnicodeString& + normalizeSecondAndAppend(UnicodeString& first U_LIFETIME_BOUND, + const UnicodeString& second, + UErrorCode& errorCode) const override; /** * Appends the second string to the first string * (merging them at the boundary) and returns the first string. @@ -613,10 +614,10 @@ class U_COMMON_API FilteredNormalizer2 : public Normalizer2 { * @return first * @stable ICU 4.4 */ - virtual UnicodeString & - append(UnicodeString &first, - const UnicodeString &second, - UErrorCode &errorCode) const override; + virtual UnicodeString& + append(UnicodeString& first U_LIFETIME_BOUND, + const UnicodeString& second, + UErrorCode& errorCode) const override; /** * Gets the decomposition mapping of c. @@ -760,11 +761,11 @@ class U_COMMON_API FilteredNormalizer2 : public Normalizer2 { */ virtual UBool isInert(UChar32 c) const override; private: - UnicodeString & - normalize(const UnicodeString &src, - UnicodeString &dest, + UnicodeString& + normalize(const UnicodeString& src, + UnicodeString& dest U_LIFETIME_BOUND, USetSpanCondition spanCondition, - UErrorCode &errorCode) const; + UErrorCode& errorCode) const; void normalizeUTF8(uint32_t options, const char *src, int32_t length, @@ -772,11 +773,11 @@ class U_COMMON_API FilteredNormalizer2 : public Normalizer2 { USetSpanCondition spanCondition, UErrorCode &errorCode) const; - UnicodeString & - normalizeSecondAndAppend(UnicodeString &first, - const UnicodeString &second, + UnicodeString& + normalizeSecondAndAppend(UnicodeString& first U_LIFETIME_BOUND, + const UnicodeString& second, UBool doNormalize, - UErrorCode &errorCode) const; + UErrorCode& errorCode) const; const Normalizer2 &norm2; const UnicodeSet &set; diff --git a/deps/icu-small/source/common/unicode/normlzr.h b/deps/icu-small/source/common/unicode/normlzr.h index 0309bce5382d..c715c4d511c7 100644 --- a/deps/icu-small/source/common/unicode/normlzr.h +++ b/deps/icu-small/source/common/unicode/normlzr.h @@ -170,7 +170,7 @@ class U_COMMON_API Normalizer : public UObject { * @param mode The normalization mode. * @deprecated ICU 56 Use Normalizer2 instead. */ - Normalizer(ConstChar16Ptr str, int32_t length, UNormalizationMode mode); + Normalizer(ConstChar16Ptr str U_LIFETIME_BOUND, int32_t length, UNormalizationMode mode); /** * Creates a new Normalizer object for iterating over the @@ -377,11 +377,13 @@ class U_COMMON_API Normalizer : public UObject { * * @deprecated ICU 56 Use Normalizer2 instead. */ - static UnicodeString & - U_EXPORT2 concatenate(const UnicodeString &left, const UnicodeString &right, - UnicodeString &result, - UNormalizationMode mode, int32_t options, - UErrorCode &errorCode); + static UnicodeString& U_EXPORT2 + concatenate(const UnicodeString& left, + const UnicodeString& right, + UnicodeString& result U_LIFETIME_BOUND, + UNormalizationMode mode, + int32_t options, + UErrorCode& errorCode); #endif /* U_HIDE_DEPRECATED_API */ /** diff --git a/deps/icu-small/source/common/unicode/parsepos.h b/deps/icu-small/source/common/unicode/parsepos.h index 99cdd7edab80..913e8b4689f8 100644 --- a/deps/icu-small/source/common/unicode/parsepos.h +++ b/deps/icu-small/source/common/unicode/parsepos.h @@ -93,7 +93,7 @@ class U_COMMON_API ParsePosition : public UObject { * Assignment operator * @stable ICU 2.0 */ - inline ParsePosition& operator=(const ParsePosition& copy); + inline ParsePosition& operator=(const ParsePosition& copy) U_LIFETIME_BOUND; /** * Equality operator. @@ -185,7 +185,7 @@ class U_COMMON_API ParsePosition : public UObject { }; inline ParsePosition& -ParsePosition::operator=(const ParsePosition& copy) +ParsePosition::operator=(const ParsePosition& copy) U_LIFETIME_BOUND { index = copy.index; errorIndex = copy.errorIndex; diff --git a/deps/icu-small/source/common/unicode/platform.h b/deps/icu-small/source/common/unicode/platform.h index b45048d68348..9369a95b656a 100644 --- a/deps/icu-small/source/common/unicode/platform.h +++ b/deps/icu-small/source/common/unicode/platform.h @@ -408,6 +408,17 @@ #else # define UPRV_HAS_FEATURE(x) 0 #endif +#if UPRV_HAS_FEATURE(address_sanitizer) || \ + UPRV_HAS_FEATURE(memory_sanitizer) || \ + UPRV_HAS_FEATURE(thread_sanitizer) || \ + UPRV_HAS_FEATURE(undefined_sanitizer) || \ + defined(__SANITIZE_ADDRESS__) || \ + defined(__SANITIZE_THREAD__) || \ + defined(__SANITIZE_UNDEFINED__) +# define UPRV_HAS_SANITIZER 1 +#else +# define UPRV_HAS_SANITIZER 0 +#endif #ifdef __has_extension # define UPRV_HAS_EXTENSION(x) __has_extension(x) #else @@ -421,8 +432,10 @@ #if defined(__clang__) +#define UPRV_NO_SANITIZE_FUNCTION __attribute__((no_sanitize("function"))) #define UPRV_NO_SANITIZE_UNDEFINED __attribute__((no_sanitize("undefined"))) #else +#define UPRV_NO_SANITIZE_FUNCTION #define UPRV_NO_SANITIZE_UNDEFINED #endif @@ -507,6 +520,37 @@ # define U_FALLTHROUGH #endif +#ifndef U_IN_DOXYGEN +/** + * \def U_LIFETIME_BOUND + * + * Annotate a function parameter or implicit object parameter to indicate that + * objects that are referred to by that parameter may also be referred to by the + * return value of the annotated function (or, for a parameter of a constructor, + * by the value of the constructed object). + * + * https://clang.llvm.org/docs/AttributeReference.html#lifetimebound + * https://learn.microsoft.com/en-us/cpp/code-quality/c26816?view=msvc-170 + * + * @internal + */ +#ifndef __cplusplus +// Not for C. +#elif defined(U_LIFETIME_BOUND) +// Use the predefined value. +#elif UPRV_HAS_CPP_ATTRIBUTE(clang::lifetimebound) +# define U_LIFETIME_BOUND [[clang::lifetimebound]] +#elif UPRV_HAS_CPP_ATTRIBUTE(msvc::lifetimebound) +# define U_LIFETIME_BOUND [[msvc::lifetimebound]] +#elif UPRV_HAS_ATTRIBUTE(lifetimebound) +# define U_LIFETIME_BOUND __attribute__((lifetimebound)) +#endif + +#ifndef U_LIFETIME_BOUND +# define U_LIFETIME_BOUND +#endif +#endif + /** @} */ /*===========================================================================*/ diff --git a/deps/icu-small/source/common/unicode/rbbi.h b/deps/icu-small/source/common/unicode/rbbi.h index e70254982c91..28c2c6915262 100644 --- a/deps/icu-small/source/common/unicode/rbbi.h +++ b/deps/icu-small/source/common/unicode/rbbi.h @@ -339,7 +339,7 @@ class U_COMMON_API RuleBasedBreakIterator /*final*/ : public BreakIterator { * @return the newly created RuleBasedBreakIterator * @stable ICU 2.0 */ - RuleBasedBreakIterator& operator=(const RuleBasedBreakIterator& that); + RuleBasedBreakIterator& operator=(const RuleBasedBreakIterator& that) U_LIFETIME_BOUND; /** * Equality operator. Returns true if both BreakIterators are of the @@ -386,7 +386,7 @@ class U_COMMON_API RuleBasedBreakIterator /*final*/ : public BreakIterator { * @return the description used to create this iterator * @stable ICU 2.0 */ - virtual const UnicodeString& getRules() const; + virtual const UnicodeString& getRules() const U_LIFETIME_BOUND; //======================================================================= // BreakIterator overrides @@ -416,7 +416,7 @@ class U_COMMON_API RuleBasedBreakIterator /*final*/ : public BreakIterator { * @return An iterator over the text being analyzed. * @stable ICU 2.0 */ - virtual CharacterIterator& getText() const override; + virtual CharacterIterator& getText() const U_LIFETIME_BOUND override; /** * Get a UText for the text being analyzed. @@ -432,7 +432,7 @@ class U_COMMON_API RuleBasedBreakIterator /*final*/ : public BreakIterator { * UText was provided, it will always be returned. * @stable ICU 3.4 */ - virtual UText *getUText(UText *fillIn, UErrorCode &status) const override; + virtual UText* getUText(UText* fillIn U_LIFETIME_BOUND, UErrorCode& status) const override; /** * Set the iterator to analyze a new piece of text. This function resets @@ -682,7 +682,7 @@ class U_COMMON_API RuleBasedBreakIterator /*final*/ : public BreakIterator { * caller, and must not be modified or deleted. * @stable ICU 4.8 */ - virtual const uint8_t *getBinaryRules(uint32_t &length); + virtual const uint8_t* getBinaryRules(uint32_t& length) U_LIFETIME_BOUND; /** * Set the subject text string upon which the break iterator is operating @@ -709,23 +709,32 @@ class U_COMMON_API RuleBasedBreakIterator /*final*/ : public BreakIterator { * * @stable ICU 49 */ - virtual RuleBasedBreakIterator &refreshInputText(UText *input, UErrorCode &status) override; + virtual RuleBasedBreakIterator& refreshInputText(UText* input, + UErrorCode& status) U_LIFETIME_BOUND override; private: //======================================================================= // implementation //======================================================================= + +#ifndef U_HIDE_INTERNAL_API +public: +#endif /* U_HIDE_INTERNAL_API */ /** * Iterate backwards from an arbitrary position in the input text using the * synthesized Safe Reverse rules. * This locates a "Safe Position" from which the forward break rules * will operate correctly. A Safe Position is not necessarily a boundary itself. * + * Public only for testing (to avoid regressions like ICU-23478). + * * @param fromPosition the position in the input text to begin the iteration. + * @internal */ int32_t handleSafePrevious(int32_t fromPosition); +private: /** * Find a rule-based boundary by running the state machine. * Input @@ -767,7 +776,8 @@ class U_COMMON_API RuleBasedBreakIterator /*final*/ : public BreakIterator { * @param c A character in the dictionary set * @param locale The locale. */ - const LanguageBreakEngine *getLanguageBreakEngine(UChar32 c, const char* locale); + const LanguageBreakEngine* getLanguageBreakEngine(UChar32 c, + const char* locale) U_LIFETIME_BOUND; public: #ifndef U_HIDE_INTERNAL_API diff --git a/deps/icu-small/source/common/unicode/rep.h b/deps/icu-small/source/common/unicode/rep.h index 7115c97b8299..b1bad3f9b147 100644 --- a/deps/icu-small/source/common/unicode/rep.h +++ b/deps/icu-small/source/common/unicode/rep.h @@ -120,7 +120,6 @@ class U_COMMON_API Replaceable : public UObject { * @param limit offset immediately following the last character to * be copied * @param target UnicodeString into which to copy characters. - * @return A reference to target * @stable ICU 2.1 */ virtual void extractBetween(int32_t start, diff --git a/deps/icu-small/source/common/unicode/resbund.h b/deps/icu-small/source/common/unicode/resbund.h index 03ff6faee239..f5c8441aa640 100644 --- a/deps/icu-small/source/common/unicode/resbund.h +++ b/deps/icu-small/source/common/unicode/resbund.h @@ -178,8 +178,7 @@ class U_COMMON_API ResourceBundle : public UObject { * @param other The resource bundle to copy. * @stable ICU 2.0 */ - ResourceBundle& - operator=(const ResourceBundle& other); + ResourceBundle& operator=(const ResourceBundle& other) U_LIFETIME_BOUND; /** Destructor. * @stable ICU 2.0 @@ -221,8 +220,7 @@ class U_COMMON_API ResourceBundle : public UObject { * @return a pointer to a zero-terminated char16_t array which lives in a memory mapped/DLL file. * @stable ICU 2.0 */ - UnicodeString - getString(UErrorCode& status) const; + UnicodeString getString(UErrorCode& status) const U_LIFETIME_BOUND; /** * returns a binary data from a resource. Can be used at most primitive resource types (binaries, @@ -236,9 +234,7 @@ class U_COMMON_API ResourceBundle : public UObject { * @return a pointer to a chunk of unsigned bytes which live in a memory mapped/DLL file. * @stable ICU 2.0 */ - const uint8_t* - getBinary(int32_t& len, UErrorCode& status) const; - + const uint8_t* getBinary(int32_t& len, UErrorCode& status) const U_LIFETIME_BOUND; /** * returns an integer vector from a resource. @@ -251,8 +247,7 @@ class U_COMMON_API ResourceBundle : public UObject { * @return a pointer to a vector of integers that lives in a memory mapped/DLL file. * @stable ICU 2.0 */ - const int32_t* - getIntVector(int32_t& len, UErrorCode& status) const; + const int32_t* getIntVector(int32_t& len, UErrorCode& status) const U_LIFETIME_BOUND; /** * returns an unsigned integer from a resource. @@ -304,7 +299,7 @@ class U_COMMON_API ResourceBundle : public UObject { * @return a key associated to this resource, or nullptr if it doesn't have a key * @stable ICU 2.0 */ - const char* getKey() const; + const char* getKey() const U_LIFETIME_BOUND; /** * Gets the locale ID of the resource bundle as a string. @@ -313,7 +308,7 @@ class U_COMMON_API ResourceBundle : public UObject { * @return the locale ID of the resource bundle as a string * @stable ICU 2.0 */ - const char* getName() const; + const char* getName() const U_LIFETIME_BOUND; /** * Returns the type of a resource. Available types are defined in enum UResType @@ -341,8 +336,7 @@ class U_COMMON_API ResourceBundle : public UObject { * @return an UnicodeString object. * @stable ICU 2.0 */ - UnicodeString - getNextString(UErrorCode& status); + UnicodeString getNextString(UErrorCode& status) U_LIFETIME_BOUND; /** * Returns the next string in a resource or nullptr if there are no more resources @@ -353,9 +347,7 @@ class U_COMMON_API ResourceBundle : public UObject { * @return an UnicodeString object. * @stable ICU 2.0 */ - UnicodeString - getNextString(const char ** key, - UErrorCode& status); + UnicodeString getNextString(const char** key, UErrorCode& status) U_LIFETIME_BOUND; /** * Returns the resource in a resource at the specified index. @@ -377,9 +369,7 @@ class U_COMMON_API ResourceBundle : public UObject { * @return an UnicodeString object. If there is an error, string is bogus * @stable ICU 2.0 */ - UnicodeString - getStringEx(int32_t index, - UErrorCode& status) const; + UnicodeString getStringEx(int32_t index, UErrorCode& status) const U_LIFETIME_BOUND; /** * Returns a resource in a resource that has a given key. This procedure works only with table @@ -403,9 +393,7 @@ class U_COMMON_API ResourceBundle : public UObject { * @return an UnicodeString object. If there is an error, string is bogus * @stable ICU 2.0 */ - UnicodeString - getStringEx(const char* key, - UErrorCode& status) const; + UnicodeString getStringEx(const char* key, UErrorCode& status) const U_LIFETIME_BOUND; #ifndef U_HIDE_DEPRECATED_API /** @@ -417,7 +405,7 @@ class U_COMMON_API ResourceBundle : public UObject { * @see getVersion * @deprecated ICU 2.8 Use getVersion instead. */ - const char* getVersionNumber() const; + const char* getVersionNumber() const U_LIFETIME_BOUND; #endif /* U_HIDE_DEPRECATED_API */ /** @@ -437,7 +425,7 @@ class U_COMMON_API ResourceBundle : public UObject { * @return a Locale object * @deprecated ICU 2.8 Use getLocale(ULocDataLocaleType type, UErrorCode &status) overload instead. */ - const Locale& getLocale() const; + const Locale& getLocale() const U_LIFETIME_BOUND; #endif /* U_HIDE_DEPRECATED_API */ /** diff --git a/deps/icu-small/source/common/unicode/schriter.h b/deps/icu-small/source/common/unicode/schriter.h index 96f03604ade5..05df2ee236ef 100644 --- a/deps/icu-small/source/common/unicode/schriter.h +++ b/deps/icu-small/source/common/unicode/schriter.h @@ -113,8 +113,7 @@ class U_COMMON_API StringCharacterIterator : public UCharCharacterIterator { * @return the newly created object. * @stable ICU 2.0 */ - StringCharacterIterator& - operator=(const StringCharacterIterator& that); + StringCharacterIterator& operator=(const StringCharacterIterator& that) U_LIFETIME_BOUND; /** * Returns true if the iterators iterate over the same range of the diff --git a/deps/icu-small/source/common/unicode/simpleformatter.h b/deps/icu-small/source/common/unicode/simpleformatter.h index 62c75d08bbc0..7af660ebec04 100644 --- a/deps/icu-small/source/common/unicode/simpleformatter.h +++ b/deps/icu-small/source/common/unicode/simpleformatter.h @@ -108,7 +108,7 @@ class U_COMMON_API SimpleFormatter final : public UMemory { * Assignment operator. * @stable ICU 57 */ - SimpleFormatter &operator=(const SimpleFormatter& other); + SimpleFormatter& operator=(const SimpleFormatter& other) U_LIFETIME_BOUND; /** * Destructor. @@ -168,9 +168,10 @@ class U_COMMON_API SimpleFormatter final : public UMemory { * @return appendTo * @stable ICU 57 */ - UnicodeString &format( - const UnicodeString &value0, - UnicodeString &appendTo, UErrorCode &errorCode) const; + UnicodeString& format( + const UnicodeString& value0, + UnicodeString& appendTo U_LIFETIME_BOUND, + UErrorCode& errorCode) const; /** * Formats the given values, appending to the appendTo builder. @@ -185,10 +186,11 @@ class U_COMMON_API SimpleFormatter final : public UMemory { * @return appendTo * @stable ICU 57 */ - UnicodeString &format( - const UnicodeString &value0, - const UnicodeString &value1, - UnicodeString &appendTo, UErrorCode &errorCode) const; + UnicodeString& format( + const UnicodeString& value0, + const UnicodeString& value1, + UnicodeString& appendTo U_LIFETIME_BOUND, + UErrorCode& errorCode) const; /** * Formats the given values, appending to the appendTo builder. @@ -204,11 +206,12 @@ class U_COMMON_API SimpleFormatter final : public UMemory { * @return appendTo * @stable ICU 57 */ - UnicodeString &format( - const UnicodeString &value0, - const UnicodeString &value1, - const UnicodeString &value2, - UnicodeString &appendTo, UErrorCode &errorCode) const; + UnicodeString& format( + const UnicodeString& value0, + const UnicodeString& value1, + const UnicodeString& value2, + UnicodeString& appendTo U_LIFETIME_BOUND, + UErrorCode& errorCode) const; /** * Formats the given values, appending to the appendTo string. @@ -229,10 +232,13 @@ class U_COMMON_API SimpleFormatter final : public UMemory { * @return appendTo * @stable ICU 57 */ - UnicodeString &formatAndAppend( - const UnicodeString *const *values, int32_t valuesLength, - UnicodeString &appendTo, - int32_t *offsets, int32_t offsetsLength, UErrorCode &errorCode) const; + UnicodeString& formatAndAppend( + const UnicodeString* const* values, + int32_t valuesLength, + UnicodeString& appendTo U_LIFETIME_BOUND, + int32_t* offsets, + int32_t offsetsLength, + UErrorCode& errorCode) const; /** * Formats the given values, replacing the contents of the result string. @@ -255,10 +261,13 @@ class U_COMMON_API SimpleFormatter final : public UMemory { * @return result * @stable ICU 57 */ - UnicodeString &formatAndReplace( - const UnicodeString *const *values, int32_t valuesLength, - UnicodeString &result, - int32_t *offsets, int32_t offsetsLength, UErrorCode &errorCode) const; + UnicodeString& formatAndReplace( + const UnicodeString* const* values, + int32_t valuesLength, + UnicodeString& result U_LIFETIME_BOUND, + int32_t* offsets, + int32_t offsetsLength, + UErrorCode& errorCode) const; /** * Returns the pattern text with none of the arguments. @@ -321,12 +330,16 @@ class U_COMMON_API SimpleFormatter final : public UMemory { int32_t *offsets, int32_t offsetsLength); - static UnicodeString &format( - const char16_t *compiledPattern, int32_t compiledPatternLength, - const UnicodeString *const *values, - UnicodeString &result, const UnicodeString *resultCopy, UBool forbidResultAsValue, - int32_t *offsets, int32_t offsetsLength, - UErrorCode &errorCode); + static UnicodeString& format( + const char16_t* compiledPattern, + int32_t compiledPatternLength, + const UnicodeString* const* values, + UnicodeString& result U_LIFETIME_BOUND, + const UnicodeString* resultCopy, + UBool forbidResultAsValue, + int32_t* offsets, + int32_t offsetsLength, + UErrorCode& errorCode); // Give access to internals to SimpleModifier for number formatting friend class number::impl::SimpleModifier; diff --git a/deps/icu-small/source/common/unicode/strenum.h b/deps/icu-small/source/common/unicode/strenum.h index fba5c9b8147e..b99fb394e662 100644 --- a/deps/icu-small/source/common/unicode/strenum.h +++ b/deps/icu-small/source/common/unicode/strenum.h @@ -129,7 +129,7 @@ class U_COMMON_API StringEnumeration : public UObject { * * @stable ICU 2.4 */ - virtual const char* next(int32_t *resultLength, UErrorCode& status); + virtual const char* next(int32_t* resultLength, UErrorCode& status) U_LIFETIME_BOUND; /** *

Returns the next element as a NUL-terminated char16_t*. If there @@ -154,7 +154,7 @@ class U_COMMON_API StringEnumeration : public UObject { * * @stable ICU 2.4 */ - virtual const char16_t* unext(int32_t *resultLength, UErrorCode& status); + virtual const char16_t* unext(int32_t* resultLength, UErrorCode& status) U_LIFETIME_BOUND; /** *

Returns the next element a UnicodeString*. If there are no @@ -176,7 +176,7 @@ class U_COMMON_API StringEnumeration : public UObject { * * @stable ICU 2.4 */ - virtual const UnicodeString* snext(UErrorCode& status); + virtual const UnicodeString* snext(UErrorCode& status) U_LIFETIME_BOUND; /** *

Resets the iterator. This re-establishes sync with the @@ -270,7 +270,7 @@ class U_COMMON_API StringEnumeration : public UObject { * @return A pointer to unistr. * @stable ICU 2.8 */ - UnicodeString *setChars(const char *s, int32_t length, UErrorCode &status); + UnicodeString* setChars(const char* s, int32_t length, UErrorCode& status) U_LIFETIME_BOUND; }; U_NAMESPACE_END diff --git a/deps/icu-small/source/common/unicode/stringpiece.h b/deps/icu-small/source/common/unicode/stringpiece.h index adb3681fe6ef..f5c9df1d074c 100644 --- a/deps/icu-small/source/common/unicode/stringpiece.h +++ b/deps/icu-small/source/common/unicode/stringpiece.h @@ -75,14 +75,14 @@ class U_COMMON_API StringPiece : public UMemory { * @param str a NUL-terminated const char * pointer * @stable ICU 4.2 */ - StringPiece(const char* str); + StringPiece(const char* str U_LIFETIME_BOUND); #if defined(__cpp_char8_t) || defined(U_IN_DOXYGEN) /** * Constructs from a NUL-terminated const char8_t * pointer. * @param str a NUL-terminated const char8_t * pointer * @stable ICU 67 */ - StringPiece(const char8_t* str) : StringPiece(reinterpret_cast(str)) {} + StringPiece(const char8_t* str U_LIFETIME_BOUND) : StringPiece(reinterpret_cast(str)) {} #endif /** * Constructs an empty StringPiece. @@ -96,14 +96,14 @@ class U_COMMON_API StringPiece : public UMemory { * Constructs from a std::string. * @stable ICU 4.2 */ - StringPiece(const std::string& str) + StringPiece(const std::string& str U_LIFETIME_BOUND) : ptr_(str.data()), length_(static_cast(str.size())) { } #if defined(__cpp_lib_char8_t) || defined(U_IN_DOXYGEN) /** * Constructs from a std::u8string. * @stable ICU 67 */ - StringPiece(const std::u8string& str) + StringPiece(const std::u8string& str U_LIFETIME_BOUND) : ptr_(reinterpret_cast(str.data())), length_(static_cast(str.size())) { } #endif @@ -138,7 +138,7 @@ class U_COMMON_API StringPiece : public UMemory { #endif ) && std::is_same_v>> - StringPiece(T str) + StringPiece(T str U_LIFETIME_BOUND) : ptr_(reinterpret_cast(str.data())), length_(static_cast(str.size())) {} @@ -148,7 +148,7 @@ class U_COMMON_API StringPiece : public UMemory { * @param len the length of the string; must be non-negative * @stable ICU 4.2 */ - StringPiece(const char* offset, int32_t len) : ptr_(offset), length_(len) { } + StringPiece(const char* offset U_LIFETIME_BOUND, int32_t len) : ptr_(offset), length_(len) { } #if defined(__cpp_char8_t) || defined(U_IN_DOXYGEN) /** * Constructs from a const char8_t * pointer and a specified length. @@ -156,7 +156,7 @@ class U_COMMON_API StringPiece : public UMemory { * @param len the length of the string; must be non-negative * @stable ICU 67 */ - StringPiece(const char8_t* str, int32_t len) : + StringPiece(const char8_t* str U_LIFETIME_BOUND, int32_t len) : StringPiece(reinterpret_cast(str), len) {} #endif @@ -166,7 +166,7 @@ class U_COMMON_API StringPiece : public UMemory { * @param pos start position in x; must be non-negative and <= x.length(). * @stable ICU 4.2 */ - StringPiece(const StringPiece& x, int32_t pos); + StringPiece(const StringPiece& x U_LIFETIME_BOUND, int32_t pos); /** * Substring of another StringPiece. * @param x the other StringPiece @@ -175,7 +175,7 @@ class U_COMMON_API StringPiece : public UMemory { * must be non-negative and will be pinned to at most x.length() - pos. * @stable ICU 4.2 */ - StringPiece(const StringPiece& x, int32_t pos, int32_t len); + StringPiece(const StringPiece& x U_LIFETIME_BOUND, int32_t pos, int32_t len); #ifndef U_HIDE_INTERNAL_API /** diff --git a/deps/icu-small/source/common/unicode/stringtriebuilder.h b/deps/icu-small/source/common/unicode/stringtriebuilder.h index 62108dfe3ea1..111ba2d69ecc 100644 --- a/deps/icu-small/source/common/unicode/stringtriebuilder.h +++ b/deps/icu-small/source/common/unicode/stringtriebuilder.h @@ -101,10 +101,16 @@ class U_COMMON_API StringTrieBuilder : public UObject { #ifndef U_HIDE_INTERNAL_API /** @internal */ - Node *makeNode(int32_t start, int32_t limit, int32_t unitIndex, UErrorCode &errorCode); - /** @internal */ - Node *makeBranchSubNode(int32_t start, int32_t limit, int32_t unitIndex, - int32_t length, UErrorCode &errorCode); + Node* makeNode(int32_t start, + int32_t limit, + int32_t unitIndex, + UErrorCode& errorCode) U_LIFETIME_BOUND; + /** @internal */ + Node* makeBranchSubNode(int32_t start, + int32_t limit, + int32_t unitIndex, + int32_t length, + UErrorCode& errorCode) U_LIFETIME_BOUND; #endif /* U_HIDE_INTERNAL_API */ /** @internal */ @@ -157,7 +163,7 @@ class U_COMMON_API StringTrieBuilder : public UObject { * an equivalent node if newNode is a duplicate. * @internal */ - Node *registerNode(Node *newNode, UErrorCode &errorCode); + Node* registerNode(Node* newNode, UErrorCode& errorCode) U_LIFETIME_BOUND; /** * Makes sure that there is only one unique FinalValueNode registered * with this value. @@ -168,7 +174,7 @@ class U_COMMON_API StringTrieBuilder : public UObject { * @return A FinalValueNode with the given value. * @internal */ - Node *registerFinalValue(int32_t value, UErrorCode &errorCode); + Node* registerFinalValue(int32_t value, UErrorCode& errorCode) U_LIFETIME_BOUND; #endif /* U_HIDE_INTERNAL_API */ /* @@ -193,9 +199,9 @@ class U_COMMON_API StringTrieBuilder : public UObject { // Do not conditionalize the following with #ifndef U_HIDE_INTERNAL_API, // it is needed for layout of other objects. + /// \cond /** * @internal - * \cond */ class Node : public UObject { public: diff --git a/deps/icu-small/source/common/unicode/symtable.h b/deps/icu-small/source/common/unicode/symtable.h index 647a3884a00c..5f533f7b105b 100644 --- a/deps/icu-small/source/common/unicode/symtable.h +++ b/deps/icu-small/source/common/unicode/symtable.h @@ -19,11 +19,11 @@ #include "unicode/uobject.h" /** - * \file + * \file * \brief C++ API: An interface that defines both lookup protocol and parsing of * symbolic names. */ - + U_NAMESPACE_BEGIN class ParsePosition; @@ -80,7 +80,17 @@ class U_COMMON_API SymbolTable /* not : public UObject because this is an interf * there is no mapping for s. * @stable ICU 2.8 */ - virtual const UnicodeString* lookup(const UnicodeString& s) const = 0; + virtual const UnicodeString* lookup(const UnicodeString& s) const U_LIFETIME_BOUND = 0; + + /** + * Returns a pointer to a pre-parsed set associated with the variable with + * the given name, or null if there is no such set (as is the case for an + * undefined or string-valued variable). + * @internal + */ + virtual const UnicodeSet* lookupSet(const UnicodeString& /*name*/) const { + return nullptr; + } /** * Lookup the UnicodeMatcher associated with the given character, and @@ -90,7 +100,7 @@ class U_COMMON_API SymbolTable /* not : public UObject because this is an interf * character, or nullptr if there is no mapping for ch. * @stable ICU 2.8 */ - virtual const UnicodeFunctor* lookupMatcher(UChar32 ch) const = 0; + virtual const UnicodeFunctor* lookupMatcher(UChar32 ch) const U_LIFETIME_BOUND = 0; /** * Parse a symbol reference name from the given string, starting diff --git a/deps/icu-small/source/common/unicode/ubidi.h b/deps/icu-small/source/common/unicode/ubidi.h index 536f4172bc20..5081370024ce 100644 --- a/deps/icu-small/source/common/unicode/ubidi.h +++ b/deps/icu-small/source/common/unicode/ubidi.h @@ -19,6 +19,7 @@ #ifndef UBIDI_H #define UBIDI_H +#include "unicode/unistr.h" #include "unicode/utypes.h" #include "unicode/uchar.h" @@ -1348,8 +1349,8 @@ ubidi_getBaseDirection(const UChar *text, int32_t length ); * @see ubidi_setLine * @stable ICU 2.0 */ -U_CAPI const UChar * U_EXPORT2 -ubidi_getText(const UBiDi *pBiDi); +U_CAPI const UChar* U_EXPORT2 +ubidi_getText(const UBiDi* pBiDi); /** * Get the length of the text. @@ -1498,8 +1499,8 @@ ubidi_getLevelAt(const UBiDi *pBiDi, int32_t charIndex); * @see ubidi_getProcessedLength * @stable ICU 2.0 */ -U_CAPI const UBiDiLevel * U_EXPORT2 -ubidi_getLevels(UBiDi *pBiDi, UErrorCode *pErrorCode); +U_CAPI const UBiDiLevel* U_EXPORT2 +ubidi_getLevels(UBiDi* pBiDi, UErrorCode* pErrorCode); /** * Get a logical run. @@ -2208,4 +2209,179 @@ ubidi_writeReverse(const UChar *src, int32_t srcLength, /*#define BIDI_SAMPLE_CODE*/ /*@}*/ +/* Utilities for MessageFormat ------------------------------------------------*/ + +#if U_SHOW_CPLUSPLUS_API + +U_NAMESPACE_BEGIN + +/** + * Used to denote the directionality of the input to a function. + * + * See https://github.com/unicode-org/message-format-wg/blob/main/spec/u-namespace.md#udir + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ +typedef enum UMFBidiOption { + /** + * Left-to-right directionality. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ + U_MF_BIDI_OPTION_LTR = 0, + /** + * Right-to-left directionality. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ + U_MF_BIDI_OPTION_RTL, + /** + * Directionality determined from expression contents. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ + U_MF_BIDI_OPTION_AUTO, + /** + * Directionality inherited from the message without + * requiring isolation of the expression value. + * (Default when no u:dir option is present.) + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ + U_MF_BIDI_OPTION_INHERIT +} UMFBidiOption; + +/** + * Used to represent the directionality of a message, where + * the AUTO setting has been resolved based on locale. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ +typedef enum UMFDirectionality { + /** + * Denotes a left-to-right message. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ + U_MF_DIRECTIONALITY_LTR = 0, + /** + * Denotes a right-to-left message. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ + U_MF_DIRECTIONALITY_RTL, + /** + * Denotes a message with unknown directionality. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ + U_MF_DIRECTIONALITY_UNKNOWN, + U_MF_DIRECTIONALITY_DEFAULT = U_MF_DIRECTIONALITY_UNKNOWN +} UMFDirectionality; + +/** + * Used in conjunction with the + * MessageFormatter::Builder::setBidiIsolationStrategy() method. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ +typedef enum UMFBidiIsolationStrategy { + /** + * Do not perform bidi isolation. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ + U_MF_BIDI_OFF = 0, + /** + * Perform bidi isolation using the "default" strategy + * described in the MF2 specification (default). + * https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#handling-bidirectional-text + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ + U_MF_BIDI_AUTO, + U_MF_BIDI_DEFAULT = U_MF_BIDI_AUTO +} UMFBidiIsolationStrategy; + +/** + * Used in conjunction with the + * MessageFormatter::Builder::setBidiIsolationStyle() method. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ +typedef enum UMFBidiIsolationStyle { + /** + * Insert bidi control characters for isolation. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ + U_MF_BIDI_STYLE_CONTROL = 0, + /** + * Insert HTML markup tags for isolation. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ + U_MF_BIDI_STYLE_HTML, + U_MF_BIDI_STYLE_DEFAULT = U_MF_BIDI_STYLE_CONTROL +} UMFBidiIsolationStyle; + +/** + * Convert a string to a UMFBidiOption, representing text directionality. + * + * @param s A string. + * + * @return U_MF_BIDI_OPTION_LTR if s is "ltr", U_MF_BIDI_OPTION_RTL if s is "rtl", + * U_MF_BIDI_OPTION_AUTO if s is "auto", or U_MF_BIDI_OPTION_INHERIT otherwise. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ +U_CAPI UMFBidiOption U_EXPORT2 +ubidi_getMFOption(const UnicodeString& s); + +/** + * Isolate a string according to the "Default Bidi Strategy" from the MessageFormat + * specification https://github.com/unicode-org/message-format-wg/blob/main/spec/formatting.md#handling-bidirectional-text + * + * @param bidiIsolationStrategy Isolation strategy to use. + * @param msgdir The directionality of the message. + * @param bidiIsolationStyle The isolation style to use for the output. + * @param uDirOption The directionality set with the u:dir option on the source + * expression. + * @param dir The directionality of fmt -- each function can set the + * directionality of the resolved value of its result. + * @param fmt String to isolate. + * + * @return A pointer to a string bidi-isolated according to bidiIsolationStrategy. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ +U_CAPI UnicodeString* U_EXPORT2 +ubidi_isolate(UMFBidiIsolationStrategy bidiIsolationStrategy, + UMFDirectionality msgdir, + UMFBidiIsolationStyle bidiIsolationStyle, + UMFBidiOption uDirOption, + UMFDirectionality dir, + UnicodeString& fmt); + +U_NAMESPACE_END + +#endif + #endif diff --git a/deps/icu-small/source/common/unicode/ubrk.h b/deps/icu-small/source/common/unicode/ubrk.h index 2b3dc7aa5768..d512f022c660 100644 --- a/deps/icu-small/source/common/unicode/ubrk.h +++ b/deps/icu-small/source/common/unicode/ubrk.h @@ -579,7 +579,8 @@ ubrk_getRuleStatusVec(UBreakIterator *bi, int32_t *fillInVec, int32_t capacity, * @stable ICU 2.8 */ U_CAPI const char* U_EXPORT2 -ubrk_getLocaleByType(const UBreakIterator *bi, ULocDataLocaleType type, UErrorCode* status); +ubrk_getLocaleByType(const UBreakIterator* bi U_LIFETIME_BOUND, + ULocDataLocaleType type, UErrorCode* status); /** * Set the subject text string upon which the break iterator is operating diff --git a/deps/icu-small/source/common/unicode/ucasemap.h b/deps/icu-small/source/common/unicode/ucasemap.h index 4b623e691071..5c4b62314baa 100644 --- a/deps/icu-small/source/common/unicode/ucasemap.h +++ b/deps/icu-small/source/common/unicode/ucasemap.h @@ -108,8 +108,8 @@ U_NAMESPACE_END * @return locale ID * @stable ICU 3.4 */ -U_CAPI const char * U_EXPORT2 -ucasemap_getLocale(const UCaseMap *csm); +U_CAPI const char* U_EXPORT2 +ucasemap_getLocale(const UCaseMap* csm U_LIFETIME_BOUND); /** * Get the options bit set that is used for case folding and string comparisons. @@ -157,8 +157,8 @@ ucasemap_setOptions(UCaseMap *csm, uint32_t options, UErrorCode *pErrorCode); * @return titlecasing break iterator * @stable ICU 3.8 */ -U_CAPI const UBreakIterator * U_EXPORT2 -ucasemap_getBreakIterator(const UCaseMap *csm); +U_CAPI const UBreakIterator* U_EXPORT2 +ucasemap_getBreakIterator(const UCaseMap* csm U_LIFETIME_BOUND); /** * Set the break iterator that is used for titlecasing. diff --git a/deps/icu-small/source/common/unicode/ucat.h b/deps/icu-small/source/common/unicode/ucat.h index 93850348fff3..9f3598ed27bb 100644 --- a/deps/icu-small/source/common/unicode/ucat.h +++ b/deps/icu-small/source/common/unicode/ucat.h @@ -150,9 +150,12 @@ u_catclose(u_nl_catd catd); * @stable ICU 2.6 */ U_CAPI const UChar* U_EXPORT2 -u_catgets(u_nl_catd catd, int32_t set_num, int32_t msg_num, - const UChar* s, - int32_t* len, UErrorCode* ec); +u_catgets(u_nl_catd catd U_LIFETIME_BOUND, + int32_t set_num, + int32_t msg_num, + const UChar* s U_LIFETIME_BOUND, + int32_t* len, + UErrorCode* ec); U_CDECL_END diff --git a/deps/icu-small/source/common/unicode/uchar.h b/deps/icu-small/source/common/unicode/uchar.h index d33b8cf7f3c8..7fd270ff2f6d 100644 --- a/deps/icu-small/source/common/unicode/uchar.h +++ b/deps/icu-small/source/common/unicode/uchar.h @@ -61,7 +61,7 @@ U_CDECL_BEGIN * @see u_getUnicodeVersion * @stable ICU 2.0 */ -#define U_UNICODE_VERSION "17.0" +#define U_UNICODE_VERSION "18.0" /** * \file @@ -2000,6 +2000,23 @@ enum UBlockCode { /** @stable ICU 78 */ UBLOCK_TOLONG_SIKI = 346, /*[11DB0]*/ + // New blocks in Unicode 18.0.0 + + /** @stable ICU 79 */ + UBLOCK_ARCHAIC_CUNEIFORM_NUMERALS = 347, /*[12550]*/ + /** @stable ICU 79 */ + UBLOCK_BENGALI_SUPPLEMENT = 348, /*[11DF0]*/ + /** @stable ICU 79 */ + UBLOCK_JURCHEN = 349, /*[18E00]*/ + /** @stable ICU 79 */ + UBLOCK_JURCHEN_RADICALS = 350, /*[191A0]*/ + /** @stable ICU 79 */ + UBLOCK_MISCELLANEOUS_SYMBOLS_AND_ARROWS_EXTENDED = 351, /*[1DB00]*/ + /** @stable ICU 79 */ + UBLOCK_MUSICAL_SYMBOLS_SUPPLEMENT = 352, /*[1D250]*/ + /** @stable ICU 79 */ + UBLOCK_SEAL = 353, /*[3D000]*/ + #ifndef U_HIDE_DEPRECATED_API /** * One more than the highest normal UBlockCode value. @@ -2007,7 +2024,7 @@ enum UBlockCode { * * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ - UBLOCK_COUNT = 347, + UBLOCK_COUNT = 354, #endif // U_HIDE_DEPRECATED_API /** @stable ICU 2.0 */ @@ -2306,6 +2323,17 @@ typedef enum UJoiningGroup { U_JG_THIN_NOON, /**< @stable ICU 78 */ + U_JG_CROWN_AIN, /**< @stable ICU 79 */ + U_JG_CROWN_BEH, /**< @stable ICU 79 */ + U_JG_CROWN_FEH, /**< @stable ICU 79 */ + U_JG_CROWN_HAH, /**< @stable ICU 79 */ + U_JG_CROWN_HEH, /**< @stable ICU 79 */ + U_JG_CROWN_KAF, /**< @stable ICU 79 */ + U_JG_CROWN_MEEM, /**< @stable ICU 79 */ + U_JG_CROWN_SAD, /**< @stable ICU 79 */ + U_JG_CROWN_SEEN, /**< @stable ICU 79 */ + U_JG_CROWN_TAH, /**< @stable ICU 79 */ + #ifndef U_HIDE_DEPRECATED_API /** * One more than the highest normal UJoiningGroup value. @@ -2781,6 +2809,15 @@ typedef enum UIndicConjunctBreak { U_INCB_EXTEND, /** @stable ICU 76 */ U_INCB_LINKER, +#ifndef U_HIDE_INTERNAL_API + /** + * One more than the highest normal UIndicConjunctBreak value. + * The highest value is available via u_getIntPropertyMaxValue(UCHAR_INDIC_CONJUNCT_BREAK). + * + * @internal The numeric value may change over time, see ICU ticket #12420. + */ + U_INTERNAL_INCB_COUNT +#endif // U_HIDE_INTERNAL_API } UIndicConjunctBreak; /** diff --git a/deps/icu-small/source/common/unicode/ucharstrie.h b/deps/icu-small/source/common/unicode/ucharstrie.h index ca4b46947045..8047ad3e9f4a 100644 --- a/deps/icu-small/source/common/unicode/ucharstrie.h +++ b/deps/icu-small/source/common/unicode/ucharstrie.h @@ -66,7 +66,7 @@ class U_COMMON_API UCharsTrie : public UMemory { * @param trieUChars The char16_t array that contains the serialized trie. * @stable ICU 4.8 */ - UCharsTrie(ConstChar16Ptr trieUChars) + UCharsTrie(ConstChar16Ptr trieUChars U_LIFETIME_BOUND) : ownedArray_(nullptr), uchars_(trieUChars), pos_(uchars_), remainingMatchLength_(-1) {} @@ -91,7 +91,7 @@ class U_COMMON_API UCharsTrie : public UMemory { * @return *this * @stable ICU 4.8 */ - UCharsTrie &reset() { + UCharsTrie& reset() U_LIFETIME_BOUND { pos_=uchars_; remainingMatchLength_=-1; return *this; @@ -124,7 +124,7 @@ class U_COMMON_API UCharsTrie : public UMemory { * @see reset * @stable ICU 65 */ - UCharsTrie &resetToState64(uint64_t state) { + UCharsTrie& resetToState64(uint64_t state) U_LIFETIME_BOUND { remainingMatchLength_ = static_cast(state >> kState64RemainingShift) - 2; pos_ = uchars_ + (state & kState64PosMask); return *this; @@ -157,7 +157,7 @@ class U_COMMON_API UCharsTrie : public UMemory { * @see resetToState * @stable ICU 4.8 */ - const UCharsTrie &saveState(State &state) const { + const UCharsTrie& saveState(State& state) const U_LIFETIME_BOUND { state.uchars=uchars_; state.pos=pos_; state.remainingMatchLength=remainingMatchLength_; @@ -174,7 +174,7 @@ class U_COMMON_API UCharsTrie : public UMemory { * @see reset * @stable ICU 4.8 */ - UCharsTrie &resetToState(const State &state) { + UCharsTrie& resetToState(const State& state) U_LIFETIME_BOUND { if(uchars_==state.uchars && uchars_!=nullptr) { pos_=state.pos; remainingMatchLength_=state.remainingMatchLength; @@ -304,7 +304,7 @@ class U_COMMON_API UCharsTrie : public UMemory { * function chaining. (See User Guide for details.) * @stable ICU 4.8 */ - Iterator(ConstChar16Ptr trieUChars, int32_t maxStringLength, UErrorCode &errorCode); + Iterator(ConstChar16Ptr trieUChars U_LIFETIME_BOUND, int32_t maxStringLength, UErrorCode& errorCode); /** * Iterates from the current state of the specified UCharsTrie. @@ -330,7 +330,7 @@ class U_COMMON_API UCharsTrie : public UMemory { * @return *this * @stable ICU 4.8 */ - Iterator &reset(); + Iterator& reset() U_LIFETIME_BOUND; /** * @return true if there are more elements. @@ -358,7 +358,7 @@ class U_COMMON_API UCharsTrie : public UMemory { * @return The string for the last successful next(). * @stable ICU 4.8 */ - const UnicodeString &getString() const { return str_; } + const UnicodeString& getString() const U_LIFETIME_BOUND { return str_; } /** * @return The value for the last successful next(). * @stable ICU 4.8 @@ -372,7 +372,9 @@ class U_COMMON_API UCharsTrie : public UMemory { return true; } - const char16_t *branchNext(const char16_t *pos, int32_t length, UErrorCode &errorCode); + const char16_t* branchNext(const char16_t* pos U_LIFETIME_BOUND, + int32_t length, + UErrorCode& errorCode); const char16_t *uchars_; const char16_t *pos_; @@ -428,7 +430,8 @@ class U_COMMON_API UCharsTrie : public UMemory { } return value; } - static inline const char16_t *skipValue(const char16_t *pos, int32_t leadUnit) { + static inline const char16_t* skipValue(const char16_t* pos U_LIFETIME_BOUND, + int32_t leadUnit) { if(leadUnit>=kMinTwoUnitValueLead) { if(leadUnit=kMinTwoUnitNodeValueLead) { if(leadUnit=kMinTwoUnitDeltaLead) { if(delta==kThreeUnitDeltaLead) { @@ -480,7 +484,7 @@ class U_COMMON_API UCharsTrie : public UMemory { return pos+delta; } - static const char16_t *skipDelta(const char16_t *pos) { + static const char16_t* skipDelta(const char16_t* pos U_LIFETIME_BOUND) { int32_t delta=*pos++; if(delta>=kMinTwoUnitDeltaLead) { if(delta==kThreeUnitDeltaLead) { @@ -505,8 +509,10 @@ class U_COMMON_API UCharsTrie : public UMemory { // Helper functions for hasUniqueValue(). // Recursively finds a unique value (or whether there is not a unique one) // from a branch. - static const char16_t *findUniqueValueFromBranch(const char16_t *pos, int32_t length, - UBool haveUniqueValue, int32_t &uniqueValue); + static const char16_t* findUniqueValueFromBranch(const char16_t* pos U_LIFETIME_BOUND, + int32_t length, + UBool haveUniqueValue, + int32_t& uniqueValue); // Recursively finds a unique value (or whether there is not a unique one) // starting from a position on a node lead unit. static UBool findUniqueValue(const char16_t *pos, UBool haveUniqueValue, int32_t &uniqueValue); diff --git a/deps/icu-small/source/common/unicode/ucharstriebuilder.h b/deps/icu-small/source/common/unicode/ucharstriebuilder.h index 5c8aa33ffb39..b0f539673626 100644 --- a/deps/icu-small/source/common/unicode/ucharstriebuilder.h +++ b/deps/icu-small/source/common/unicode/ucharstriebuilder.h @@ -69,7 +69,9 @@ class U_COMMON_API UCharsTrieBuilder : public StringTrieBuilder { * @return *this * @stable ICU 4.8 */ - UCharsTrieBuilder &add(const UnicodeString &s, int32_t value, UErrorCode &errorCode); + UCharsTrieBuilder& add(const UnicodeString& s, + int32_t value, + UErrorCode& errorCode) U_LIFETIME_BOUND; /** * Builds a UCharsTrie for the add()ed data. @@ -116,8 +118,9 @@ class U_COMMON_API UCharsTrieBuilder : public StringTrieBuilder { * @return result * @stable ICU 4.8 */ - UnicodeString &buildUnicodeString(UStringTrieBuildOption buildOption, UnicodeString &result, - UErrorCode &errorCode); + UnicodeString& buildUnicodeString(UStringTrieBuildOption buildOption, + UnicodeString& result U_LIFETIME_BOUND, + UErrorCode& errorCode) U_LIFETIME_BOUND; /** * Removes all (string, value) pairs. @@ -125,7 +128,7 @@ class U_COMMON_API UCharsTrieBuilder : public StringTrieBuilder { * @return *this * @stable ICU 4.8 */ - UCharsTrieBuilder &clear() { + UCharsTrieBuilder& clear() U_LIFETIME_BOUND { strings.remove(); elementsLength=0; ucharsLength=0; diff --git a/deps/icu-small/source/common/unicode/uchriter.h b/deps/icu-small/source/common/unicode/uchriter.h index bd2f29877b99..5e4d96d129db 100644 --- a/deps/icu-small/source/common/unicode/uchriter.h +++ b/deps/icu-small/source/common/unicode/uchriter.h @@ -46,7 +46,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator { * @param length The length of the char16_t array * @stable ICU 2.0 */ - UCharCharacterIterator(ConstChar16Ptr textPtr, int32_t length); + UCharCharacterIterator(ConstChar16Ptr textPtr U_LIFETIME_BOUND, int32_t length); /** * Create an iterator over the char16_t array referred to by "textPtr". @@ -61,7 +61,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator { * @param position The starting position of the iteration * @stable ICU 2.0 */ - UCharCharacterIterator(ConstChar16Ptr textPtr, int32_t length, + UCharCharacterIterator(ConstChar16Ptr textPtr U_LIFETIME_BOUND, int32_t length, int32_t position); /** @@ -80,7 +80,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator { * @param position The starting position of the iteration * @stable ICU 2.0 */ - UCharCharacterIterator(ConstChar16Ptr textPtr, int32_t length, + UCharCharacterIterator(ConstChar16Ptr textPtr U_LIFETIME_BOUND, int32_t length, int32_t textBegin, int32_t textEnd, int32_t position); @@ -108,8 +108,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator { * @return the newly created object * @stable ICU 2.0 */ - UCharCharacterIterator& - operator=(const UCharCharacterIterator& that); + UCharCharacterIterator& operator=(const UCharCharacterIterator& that) U_LIFETIME_BOUND; /** * Returns true if the iterators iterate over the same range of the diff --git a/deps/icu-small/source/common/unicode/uclean.h b/deps/icu-small/source/common/unicode/uclean.h index f5b0aa088a94..b29e9d56ac53 100644 --- a/deps/icu-small/source/common/unicode/uclean.h +++ b/deps/icu-small/source/common/unicode/uclean.h @@ -126,7 +126,6 @@ typedef void *U_CALLCONV UMemReallocFn(const void *context, void *mem, size_t si * similar the standard C library free(). * @param context user supplied value, obtained from u_setMemoryFunctions(). * @param mem Pointer to the memory block to be freed. - * @return Pointer to the resized memory block, or NULL if the resizing failed. * @stable ICU 2.8 * @system */ diff --git a/deps/icu-small/source/common/unicode/ucnv.h b/deps/icu-small/source/common/unicode/ucnv.h index 4a7972c95b75..7e9500b339a1 100644 --- a/deps/icu-small/source/common/unicode/ucnv.h +++ b/deps/icu-small/source/common/unicode/ucnv.h @@ -551,11 +551,11 @@ U_CAPI UConverter* U_EXPORT2 ucnv_clone(const UConverter *cnv, UErrorCode *statu * @return pointer to the new clone * @deprecated ICU 71 Use ucnv_clone() instead. */ -U_DEPRECATED UConverter * U_EXPORT2 -ucnv_safeClone(const UConverter *cnv, - void *stackBuffer, - int32_t *pBufferSize, - UErrorCode *status); +U_DEPRECATED UConverter* U_EXPORT2 +ucnv_safeClone(const UConverter* cnv, + void* stackBuffer U_LIFETIME_BOUND, + int32_t* pBufferSize, + UErrorCode* status); /** * \def U_CNV_SAFECLONE_BUFFERSIZE @@ -868,8 +868,8 @@ ucnv_getDisplayName(const UConverter *converter, * @see ucnv_getDisplayName * @stable ICU 2.0 */ -U_CAPI const char * U_EXPORT2 -ucnv_getName(const UConverter *converter, UErrorCode *err); +U_CAPI const char* U_EXPORT2 +ucnv_getName(const UConverter* converter U_LIFETIME_BOUND, UErrorCode* err); /** * Gets a codepage number associated with the converter. This is not guaranteed diff --git a/deps/icu-small/source/common/unicode/ucnvsel.h b/deps/icu-small/source/common/unicode/ucnvsel.h index 9373ec951bf8..e5b34a8e7297 100644 --- a/deps/icu-small/source/common/unicode/ucnvsel.h +++ b/deps/icu-small/source/common/unicode/ucnvsel.h @@ -132,7 +132,7 @@ U_NAMESPACE_END * @stable ICU 4.2 */ U_CAPI UConverterSelector* U_EXPORT2 -ucnvsel_openFromSerialized(const void* buffer, int32_t length, UErrorCode* status); +ucnvsel_openFromSerialized(const void* buffer U_LIFETIME_BOUND, int32_t length, UErrorCode* status); /** * Serialize a selector into a linear buffer. @@ -166,9 +166,11 @@ ucnvsel_serialize(const UConverterSelector* sel, * * @stable ICU 4.2 */ -U_CAPI UEnumeration * U_EXPORT2 -ucnvsel_selectForString(const UConverterSelector* sel, - const UChar *s, int32_t length, UErrorCode *status); +U_CAPI UEnumeration* U_EXPORT2 +ucnvsel_selectForString(const UConverterSelector* sel U_LIFETIME_BOUND, + const UChar* s, + int32_t length, + UErrorCode* status); /** * Select converters that can map all characters in a UTF-8 string, @@ -184,9 +186,11 @@ ucnvsel_selectForString(const UConverterSelector* sel, * * @stable ICU 4.2 */ -U_CAPI UEnumeration * U_EXPORT2 -ucnvsel_selectForUTF8(const UConverterSelector* sel, - const char *s, int32_t length, UErrorCode *status); +U_CAPI UEnumeration* U_EXPORT2 +ucnvsel_selectForUTF8(const UConverterSelector* sel U_LIFETIME_BOUND, + const char* s, + int32_t length, + UErrorCode* status); #endif /* !UCONFIG_NO_CONVERSION */ diff --git a/deps/icu-small/source/common/unicode/ucptrie.h b/deps/icu-small/source/common/unicode/ucptrie.h index dadef79c5120..96c2ef7cae6d 100644 --- a/deps/icu-small/source/common/unicode/ucptrie.h +++ b/deps/icu-small/source/common/unicode/ucptrie.h @@ -201,10 +201,13 @@ typedef enum UCPTrieValueWidth UCPTrieValueWidth; * @see ucptrie_toBinary * @stable ICU 63 */ -U_CAPI UCPTrie * U_EXPORT2 -ucptrie_openFromBinary(UCPTrieType type, UCPTrieValueWidth valueWidth, - const void *data, int32_t length, int32_t *pActualLength, - UErrorCode *pErrorCode); +U_CAPI UCPTrie* U_EXPORT2 +ucptrie_openFromBinary(UCPTrieType type, + UCPTrieValueWidth valueWidth, + const void* data U_LIFETIME_BOUND, + int32_t length, + int32_t* pActualLength, + UErrorCode* pErrorCode); /** * Closes a trie and releases associated memory. diff --git a/deps/icu-small/source/common/unicode/ucurr.h b/deps/icu-small/source/common/unicode/ucurr.h index 5589e7999049..8fe594b9022a 100644 --- a/deps/icu-small/source/common/unicode/ucurr.h +++ b/deps/icu-small/source/common/unicode/ucurr.h @@ -190,7 +190,7 @@ ucurr_unregister(UCurrRegistryKey key, UErrorCode* status); * @stable ICU 2.6 */ U_CAPI const UChar* U_EXPORT2 -ucurr_getName(const UChar* currency, +ucurr_getName(const UChar* currency U_LIFETIME_BOUND, const char* locale, UCurrNameStyle nameStyle, UBool* isChoiceFormat, @@ -215,7 +215,7 @@ ucurr_getName(const UChar* currency, * @stable ICU 4.2 */ U_CAPI const UChar* U_EXPORT2 -ucurr_getPluralName(const UChar* currency, +ucurr_getPluralName(const UChar* currency U_LIFETIME_BOUND, const char* locale, UBool* isChoiceFormat, const char* pluralCount, @@ -461,6 +461,16 @@ ucurr_getKeywordValuesForLocale(const char* key, U_CAPI int32_t U_EXPORT2 ucurr_getNumericCode(const UChar* currency); +/** + * The number of digits to be used when formatting + * a currency amount when the default number of + * digits cannot be determined from the currency name. + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ +#define U_CURR_DEFAULT_DIGITS 2 + #endif /* #if !UCONFIG_NO_FORMATTING */ #endif diff --git a/deps/icu-small/source/common/unicode/udata.h b/deps/icu-small/source/common/unicode/udata.h index 4cda255010ad..7a1fa1dad0f6 100644 --- a/deps/icu-small/source/common/unicode/udata.h +++ b/deps/icu-small/source/common/unicode/udata.h @@ -276,8 +276,8 @@ udata_close(UDataMemory *pData); * @param pData The pointer to data memory object * @stable ICU 2.0 */ -U_CAPI const void * U_EXPORT2 -udata_getMemory(UDataMemory *pData); +U_CAPI const void* U_EXPORT2 +udata_getMemory(UDataMemory* pData U_LIFETIME_BOUND); /** * Get the information from the data memory header. diff --git a/deps/icu-small/source/common/unicode/uenum.h b/deps/icu-small/source/common/unicode/uenum.h index d9c893e06d92..a5da825f222f 100644 --- a/deps/icu-small/source/common/unicode/uenum.h +++ b/deps/icu-small/source/common/unicode/uenum.h @@ -111,7 +111,7 @@ uenum_count(UEnumeration* en, UErrorCode* status); * @stable ICU 2.2 */ U_CAPI const UChar* U_EXPORT2 -uenum_unext(UEnumeration* en, +uenum_unext(UEnumeration* en U_LIFETIME_BOUND, int32_t* resultLength, UErrorCode* status); @@ -144,7 +144,7 @@ uenum_unext(UEnumeration* en, * @stable ICU 2.2 */ U_CAPI const char* U_EXPORT2 -uenum_next(UEnumeration* en, +uenum_next(UEnumeration* en U_LIFETIME_BOUND, int32_t* resultLength, UErrorCode* status); @@ -188,8 +188,9 @@ uenum_openFromStringEnumeration(icu::StringEnumeration* adopted, UErrorCode* ec) * @stable ICU 50 */ U_CAPI UEnumeration* U_EXPORT2 -uenum_openUCharStringsEnumeration(const UChar* const strings[], int32_t count, - UErrorCode* ec); +uenum_openUCharStringsEnumeration(U_LIFETIME_BOUND const UChar* const strings[], + int32_t count, + UErrorCode* ec); /** * Given an array of const char* strings (invariant chars only), return a UEnumeration. String pointers from 0..count-1 must not be null. @@ -203,7 +204,8 @@ uenum_openUCharStringsEnumeration(const UChar* const strings[], int32_t count, * @stable ICU 50 */ U_CAPI UEnumeration* U_EXPORT2 -uenum_openCharStringsEnumeration(const char* const strings[], int32_t count, +uenum_openCharStringsEnumeration(U_LIFETIME_BOUND const char* const strings[], + int32_t count, UErrorCode* ec); #endif diff --git a/deps/icu-small/source/common/unicode/uldnames.h b/deps/icu-small/source/common/unicode/uldnames.h index 47b047ece97b..787272535b64 100644 --- a/deps/icu-small/source/common/unicode/uldnames.h +++ b/deps/icu-small/source/common/unicode/uldnames.h @@ -109,8 +109,8 @@ U_NAMESPACE_END * @return the display locale * @stable ICU 4.4 */ -U_CAPI const char * U_EXPORT2 -uldn_getLocale(const ULocaleDisplayNames *ldn); +U_CAPI const char* U_EXPORT2 +uldn_getLocale(const ULocaleDisplayNames* ldn U_LIFETIME_BOUND); /** * Returns the dialect handling used in the display names. diff --git a/deps/icu-small/source/common/unicode/uloc.h b/deps/icu-small/source/common/unicode/uloc.h index 9cd7f5e1b0d6..3486236a8397 100644 --- a/deps/icu-small/source/common/unicode/uloc.h +++ b/deps/icu-small/source/common/unicode/uloc.h @@ -1330,7 +1330,7 @@ uloc_toLanguageTag(const char* localeID, * @stable ICU 54 */ U_CAPI const char* U_EXPORT2 -uloc_toUnicodeLocaleKey(const char* keyword); +uloc_toUnicodeLocaleKey(const char* keyword U_LIFETIME_BOUND); /** * Converts the specified keyword value (legacy type, or BCP 47 @@ -1361,7 +1361,7 @@ uloc_toUnicodeLocaleKey(const char* keyword); * @stable ICU 54 */ U_CAPI const char* U_EXPORT2 -uloc_toUnicodeLocaleType(const char* keyword, const char* value); +uloc_toUnicodeLocaleType(const char* keyword, const char* value U_LIFETIME_BOUND); /** * Converts the specified keyword (BCP 47 Unicode locale extension key, or @@ -1376,7 +1376,7 @@ uloc_toUnicodeLocaleType(const char* keyword, const char* value); * @stable ICU 54 */ U_CAPI const char* U_EXPORT2 -uloc_toLegacyKey(const char* keyword); +uloc_toLegacyKey(const char* keyword U_LIFETIME_BOUND); /** * Converts the specified keyword value (BCP 47 Unicode locale extension type, @@ -1405,6 +1405,6 @@ uloc_toLegacyKey(const char* keyword); * @stable ICU 54 */ U_CAPI const char* U_EXPORT2 -uloc_toLegacyType(const char* keyword, const char* value); +uloc_toLegacyType(const char* keyword, const char* value U_LIFETIME_BOUND); #endif /*_ULOC*/ diff --git a/deps/icu-small/source/common/unicode/ulocale.h b/deps/icu-small/source/common/unicode/ulocale.h index 1b3af3a5f26d..07d600c12e1c 100644 --- a/deps/icu-small/source/common/unicode/ulocale.h +++ b/deps/icu-small/source/common/unicode/ulocale.h @@ -74,7 +74,7 @@ ulocale_close(ULocale* locale); * @stable ICU 74 */ U_CAPI const char* U_EXPORT2 -ulocale_getLanguage(const ULocale* locale); +ulocale_getLanguage(const ULocale* locale U_LIFETIME_BOUND); /** * Returns the locale's ISO-15924 abbreviation script code. @@ -84,7 +84,7 @@ ulocale_getLanguage(const ULocale* locale); * @stable ICU 74 */ U_CAPI const char* U_EXPORT2 -ulocale_getScript(const ULocale* locale); +ulocale_getScript(const ULocale* locale U_LIFETIME_BOUND); /** * Returns the locale's ISO-3166 region code. @@ -94,7 +94,7 @@ ulocale_getScript(const ULocale* locale); * @stable ICU 74 */ U_CAPI const char* U_EXPORT2 -ulocale_getRegion(const ULocale* locale); +ulocale_getRegion(const ULocale* locale U_LIFETIME_BOUND); /** * Returns the locale's variant code. @@ -104,7 +104,7 @@ ulocale_getRegion(const ULocale* locale); * @stable ICU 74 */ U_CAPI const char* U_EXPORT2 -ulocale_getVariant(const ULocale* locale); +ulocale_getVariant(const ULocale* locale U_LIFETIME_BOUND); /** * Returns the programmatic name of the entire locale, with the language, @@ -117,7 +117,7 @@ ulocale_getVariant(const ULocale* locale); * @stable ICU 74 */ U_CAPI const char* U_EXPORT2 -ulocale_getLocaleID(const ULocale* locale); +ulocale_getLocaleID(const ULocale* locale U_LIFETIME_BOUND); /** * Returns the programmatic name of the entire locale as ulocale_getLocaleID() @@ -128,7 +128,7 @@ ulocale_getLocaleID(const ULocale* locale); * @stable ICU 74 */ U_CAPI const char* U_EXPORT2 -ulocale_getBaseName(const ULocale* locale); +ulocale_getBaseName(const ULocale* locale U_LIFETIME_BOUND); /** * Gets the bogus state. Locale object can be bogus if it doesn't exist diff --git a/deps/icu-small/source/common/unicode/ulocbuilder.h b/deps/icu-small/source/common/unicode/ulocbuilder.h index ce61995bde62..3e10c5118bd9 100644 --- a/deps/icu-small/source/common/unicode/ulocbuilder.h +++ b/deps/icu-small/source/common/unicode/ulocbuilder.h @@ -279,7 +279,6 @@ ulocbld_setExtension(ULocaleBuilder* builder, char key, const char* value, int32 * terminated when the length is non-negative) * @param typeLength the length of the type; if negative, then the type need to * be null terminated, - * @return This builder. * @stable ICU 74 */ U_CAPI void U_EXPORT2 diff --git a/deps/icu-small/source/common/unicode/unifilt.h b/deps/icu-small/source/common/unicode/unifilt.h index 0fcaf4b789c4..1c523c873f9f 100644 --- a/deps/icu-small/source/common/unicode/unifilt.h +++ b/deps/icu-small/source/common/unicode/unifilt.h @@ -93,7 +93,7 @@ class U_COMMON_API UnicodeFilter : public UnicodeFunctor, public UnicodeMatcher * and return the pointer. * @stable ICU 2.4 */ - virtual UnicodeMatcher* toMatcher() const override; + virtual UnicodeMatcher* toMatcher() const U_LIFETIME_BOUND override; /** * Implement UnicodeMatcher API. diff --git a/deps/icu-small/source/common/unicode/unifunct.h b/deps/icu-small/source/common/unicode/unifunct.h index 4aeb0f5d7da5..050e8cadeb42 100644 --- a/deps/icu-small/source/common/unicode/unifunct.h +++ b/deps/icu-small/source/common/unicode/unifunct.h @@ -63,7 +63,7 @@ class U_COMMON_API UnicodeFunctor : public UObject { * UnicodeFunctor. * @stable ICU 2.4 */ - virtual UnicodeMatcher* toMatcher() const; + virtual UnicodeMatcher* toMatcher() const U_LIFETIME_BOUND; /** * Cast 'this' to a UnicodeReplacer* pointer and return the @@ -75,7 +75,7 @@ class U_COMMON_API UnicodeFunctor : public UObject { * UnicodeFunctor. * @stable ICU 2.4 */ - virtual UnicodeReplacer* toReplacer() const; + virtual UnicodeReplacer* toReplacer() const U_LIFETIME_BOUND; /** * Return the class ID for this class. This is useful only for diff --git a/deps/icu-small/source/common/unicode/unimatch.h b/deps/icu-small/source/common/unicode/unimatch.h index 302332f4558c..62336cba4472 100644 --- a/deps/icu-small/source/common/unicode/unimatch.h +++ b/deps/icu-small/source/common/unicode/unimatch.h @@ -140,7 +140,7 @@ class U_COMMON_API UnicodeMatcher /* not : public UObject because this is an int * U+000A, U+0020..U+007E. * @stable ICU 2.4 */ - virtual UnicodeString& toPattern(UnicodeString& result, + virtual UnicodeString& toPattern(UnicodeString& result U_LIFETIME_BOUND, UBool escapeUnprintable = false) const = 0; /** diff --git a/deps/icu-small/source/common/unicode/uniset.h b/deps/icu-small/source/common/unicode/uniset.h index f9eb123e0736..38c22e0ae20f 100644 --- a/deps/icu-small/source/common/unicode/uniset.h +++ b/deps/icu-small/source/common/unicode/uniset.h @@ -39,236 +39,126 @@ class UVector; class RuleCharacterIterator; /** - * A mutable set of Unicode characters and multicharacter strings. Objects of this class - * represent character classes used in regular expressions. - * A character specifies a subset of Unicode code points. Legal - * code points are U+0000 to U+10FFFF, inclusive. + * A mutable set of Unicode characters and multicharacter strings. Objects of this class represent + * character classes used in regular expressions. A UnicodeSet specifies a finite set of + * Unicode code point sequences, optimized for single code points. + * + *

Note: method freeze() will not only make the set immutable, but also makes important methods + * much higher performance: contains(c), containsNone(...), span(...), spanBack(...) etc. After the + * object is frozen, any subsequent call that wants to change the object will throw + * UnsupportedOperationException. * *

The UnicodeSet class is not designed to be subclassed. * - *

UnicodeSet supports two APIs. The first is the - * operand API that allows the caller to modify the value of - * a UnicodeSet object. It conforms to Java 2's - * java.util.Set interface, although - * UnicodeSet does not actually implement that - * interface. All methods of Set are supported, with the - * modification that they take a character range or single character - * instead of an Object, and they take a - * UnicodeSet instead of a Collection. The - * operand API may be thought of in terms of boolean logic: a boolean - * OR is implemented by add, a boolean AND is implemented - * by retain, a boolean XOR is implemented by - * complement taking an argument, and a boolean NOT is - * implemented by complement with no argument. In terms - * of traditional set theory function names, add is a - * union, retain is an intersection, remove - * is an asymmetric difference, and complement with no - * argument is a set complement with respect to the superset range - * MIN_VALUE-MAX_VALUE + *

UnicodeSet supports two APIs. The first is the operand API that allows + * the caller to modify the value of a UnicodeSet object. It conforms to Java 2's + * java.util.Set interface, although UnicodeSet does not actually + * implement that interface. All methods of Set are supported, with the modification + * that they take a character range, a single character, or a string instead of an Object + * , and they take a UnicodeSet instead of a Collection. The + * operand API may be thought of in terms of boolean logic: a boolean OR is implemented by add + * , a boolean AND is implemented by retain, a boolean XOR is implemented by + * complement + * taking an argument, and a boolean NOT is implemented by complement with no + * argument. In terms of traditional set theory function names, add is a union, + * retain is an intersection, remove is an asymmetric difference, and + * complement with no argument is a set complement with respect to the superset range + * MIN_VALUE-MAX_VALUE. * - *

The second API is the - * applyPattern()/toPattern() API from the - * java.text.Format-derived classes. Unlike the - * methods that add characters, add categories, and control the logic - * of the set, the method applyPattern() sets all - * attributes of a UnicodeSet at once, based on a - * string pattern. + *

The second API for building up a UnicodeSet is the applyPattern()/ + * toPattern() API from the + * java.text.Format-derived classes. Unlike the methods that add characters, add categories, + * and control the logic of the set, the method applyPattern() sets all attributes of a + * UnicodeSet at once, based on a pattern string. * - *

Pattern syntax

+ *

Pattern syntax Pattern strings are accepted by the constructors and the {@link + * #applyPattern()} methods and returned by the {@link #toPattern()} method. These patterns follow + * the UnicodeSet syntax defined by Draft Unicode + * Technical Standard #61, UnicodeSet notation. * - * Patterns are accepted by the constructors and the - * applyPattern() methods and returned by the - * toPattern() method. These patterns follow a syntax - * similar to that employed by version 8 regular expression character - * classes. Here are some simple examples: + *

* - * \htmlonly
\endhtmlonly - * - * - * - * - * - * - * - * - * - * + *
[]No characters
[a]The character 'a'
[ae]The characters 'a' and 'e'
+ * + * + * + * + * + * + * + * + * * * - * - * + * * * - * - * + * + * * * - * - * + * * * - * - * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * * *
[]No characters
[a]The character 'a'
[ae]The characters 'a' and 'e'
[a-e]The characters 'a' through 'e' inclusive, in Unicode code + * [a-e]The characters 'a' through 'e' inclusive, in Unicode code * point order
[\\u4E01]The character U+4E01[\\u4E01]The character U+4E01
[a{ab}{ac}]The character 'a' and the multicharacter strings "ab" and + * [a{ab}{ac}]The character 'a' and the multicharacter strings "ab" and * "ac"
[\\p{Lu}]All characters in the general category Uppercase Letter[\\p{Lu}]All characters in the general category Uppercase Letter
[[:Letter:][:Number_Letter:]]All characters that have a General_Category in the Letter grouping or have the General_Category Number_Letter
[[:Word_Break=ALetter:]-[:Letter:]]All characters with a Word_Break property assignment of ALetter that do not have a General_Category in the Letter grouping
[\\p{Greek}&\\p{Letter}]All characters with a Script property assignment of Greek whose General_Category is in the Letter grouping
[^a]All code points except U+0061 'a'.
- * \htmlonly
\endhtmlonly * - * Any character may be preceded by a backslash in order to remove any special - * meaning. White space characters, as defined by UCharacter.isWhitespace(), are - * ignored, unless they are escaped. + *
* - *

Property patterns specify a set of characters having a certain - * property as defined by the Unicode standard. Both the POSIX-like - * "[:Lu:]" and the Perl-like syntax "\\p{Lu}" are recognized. For a - * complete list of supported property patterns, see the User's Guide - * for UnicodeSet at - * - * https://unicode-org.github.io/icu/userguide/strings/unicodeset. - * Actual determination of property data is defined by the underlying - * Unicode database as implemented by UCharacter. + * Most characters may be preceded by a backslash in order to remove any special meaning. Unescaped + * white space characters, as defined by the Unicode Pattern_White_Space property, are ignored + * outside of string literals, except insofar as they separate lexical elements. * - *

Patterns specify individual characters, ranges of characters, and - * Unicode property sets. When elements are concatenated, they - * specify their union. To complement a set, place a '^' immediately - * after the opening '['. Property patterns are inverted by modifying - * their delimiters; "[:^foo]" and "\\P{foo}". In any other location, - * '^' has no special meaning. + *

Property queries specify a set of characters having a certain property as defined by the + * Unicode standard. Both the POSIX-like "[:Lu:]" and the Perl-like syntax "\\p{Lu}" are recognized. * - *

Since ICU 70, "[^...]", "[:^foo]", "\\P{foo}", and "[:binaryProperty=No:]" - * perform a “code point complement” (all code points minus the original set), - * removing all multicharacter strings, - * equivalent to .complement().removeAllStrings(). - * The complement() API function continues to perform a - * symmetric difference with all code points and thus retains all multicharacter strings. + *

As shown in the examples above, UnicodeSet syntax supports some set operations: the union of + * sets 𝑋 and 𝑌 union is written [𝑋𝑌], their intersection [𝑋&𝑌], and their asymmetric set + * difference (the complement of 𝑌 in 𝑋) is [𝑋-𝑌]. The code point complement of 𝑋, equivalent + * to .{@link #complement()}.{@link #removeAllStrings()}, is written [^𝑋]. * - *

Ranges are indicated by placing two a '-' between two - * characters, as in "a-z". This specifies the range of all - * characters from the left to the right, in Unicode order. If the - * left character is greater than or equal to the - * right character it is a syntax error. If a '-' occurs as the first - * character after the opening '[' or '[^', or if it occurs as the - * last character before the closing ']', then it is taken as a - * literal. Thus "[a\-b]", "[-ab]", and "[ab-]" all indicate the same - * set of three characters, 'a', 'b', and '-'. + *

Ranges are indicated by placing a '-' between two characters, as in "a-z". This specifies the + * range of all characters from the left to the right, in code point order. * - *

Sets may be intersected using the '&' operator or the asymmetric - * set difference may be taken using the '-' operator, for example, - * "[[:L:]&[\\u0000-\\u0FFF]]" indicates the set of all Unicode letters - * with values less than 4096. Operators ('&' and '|') have equal - * precedence and bind left-to-right. Thus - * "[[:L:]-[a-z]-[\\u0100-\\u01FF]]" is equivalent to - * "[[[:L:]-[a-z]]-[\\u0100-\\u01FF]]". This only really matters for - * difference; intersection is commutative. - * - * - *
[a]The set containing 'a' - *
[a-z]The set containing 'a' - * through 'z' and all letters in between, in Unicode order - *
[^a-z]The set containing - * all characters but 'a' through 'z', - * that is, U+0000 through 'a'-1 and 'z'+1 through U+10FFFF - *
[[pat1][pat2]] - * The union of sets specified by pat1 and pat2 - *
[[pat1]&[pat2]] - * The intersection of sets specified by pat1 and pat2 - *
[[pat1]-[pat2]] - * The asymmetric difference of sets specified by pat1 and - * pat2 - *
[:Lu:] or \\p{Lu} - * The set of characters having the specified - * Unicode property; in - * this case, Unicode uppercase letters - *
[:^Lu:] or \\P{Lu} - * The set of characters not having the given - * Unicode property - *
+ *

Formal specification * - *

Formal syntax

+ *

This class is a conformant and consistent implementation of UnicodeSet notation as defined in + * Draft Unicode Technical Standard #61, UnicodeSet + * notation. It supports only property queries that are recommended for general-purpose APIs + * (that is, it does not support the productions with a gray background in the grammar). The set of + * supported properties, and additional restrictions, are described in the User Guide UnicodeSet / + * Restrictions. * - * \htmlonly

\endhtmlonly - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
pattern :=  ('[' '^'? item* ']') | - * property
item :=  char | (char '-' char) | pattern-expr
- *
pattern-expr :=  pattern | pattern-expr pattern | - * pattern-expr op pattern
- *
op :=  '&' | '-'
- *
special :=  '[' | ']' | '-'
- *
char :=  any character that is not special
- * | ('\'
any character)
- * | ('\\u' hex hex hex hex)
- *
hex :=  '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' |
- *     'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f'
property :=  a Unicode property set pattern
- *
- * - * - * - * - *
Legend: - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
a := b  a may be replaced by b
a?zero or one instance of a
- *
a*one or more instances of a
- *
a | beither a or b
- *
'a'the literal string between the quotes
- *
- * \htmlonly
\endhtmlonly + *

It implements a number of pure extensions documented in the User Guide at UnicodeSet / + * Extensions. In particular, the support for variables interacts with the API: If a {@link + * SymbolTable} is passed to the constructor of {@code UnicodeSet}, a lexical element variable is + * introduced, whose definition is given by the implementation of {@link + * SymbolTable#parseReference}. * *

Note: * - Most UnicodeSet methods do not take a UErrorCode parameter because @@ -482,7 +372,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * A frozen set will not be modified. * @stable ICU 2.0 */ - UnicodeSet& operator=(const UnicodeSet& o); + UnicodeSet& operator=(const UnicodeSet& o) U_LIFETIME_BOUND; /** * Compares the specified object with this set for equality. Returns @@ -532,7 +422,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * * @stable ICU 4.2 */ - inline static UnicodeSet *fromUSet(USet *uset); + inline static UnicodeSet* fromUSet(USet* uset U_LIFETIME_BOUND); /** * Get a UnicodeSet pointer from a const USet @@ -542,8 +432,8 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * * @stable ICU 4.2 */ - inline static const UnicodeSet *fromUSet(const USet *uset); - + inline static const UnicodeSet* fromUSet(const USet* uset U_LIFETIME_BOUND); + /** * Produce a USet * pointer for this UnicodeSet. * USet is the plain C type for UnicodeSet @@ -551,8 +441,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return a USet pointer for this UnicodeSet * @stable ICU 4.2 */ - inline USet *toUSet(); - + inline USet* toUSet() U_LIFETIME_BOUND; /** * Produce a const USet * pointer for this UnicodeSet. @@ -561,7 +450,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return a const USet pointer for this UnicodeSet * @stable ICU 4.2 */ - inline const USet * toUSet() const; + inline const USet* toUSet() const U_LIFETIME_BOUND; //---------------------------------------------------------------- @@ -591,7 +480,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @see cloneAsThawed * @stable ICU 3.8 */ - UnicodeSet *freeze(); + UnicodeSet* freeze() U_LIFETIME_BOUND; /** * Clone the set and make the clone mutable. @@ -616,7 +505,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @param end last character in the set, inclusive * @stable ICU 2.4 */ - UnicodeSet& set(UChar32 start, UChar32 end); + UnicodeSet& set(UChar32 start, UChar32 end) U_LIFETIME_BOUND; /** * Return true if the given position, in the given pattern, appears @@ -638,8 +527,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return a reference to this * @stable ICU 2.0 */ - UnicodeSet& applyPattern(const UnicodeString& pattern, - UErrorCode& status); + UnicodeSet& applyPattern(const UnicodeString& pattern, UErrorCode& status) U_LIFETIME_BOUND; #ifndef U_HIDE_INTERNAL_API /** @@ -663,7 +551,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { UnicodeSet& applyPattern(const UnicodeString& pattern, uint32_t options, const SymbolTable* symbols, - UErrorCode& status); + UErrorCode& status) U_LIFETIME_BOUND; #endif /* U_HIDE_INTERNAL_API */ /** @@ -703,7 +591,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { ParsePosition& pos, uint32_t options, const SymbolTable* symbols, - UErrorCode& status); + UErrorCode& status) U_LIFETIME_BOUND; /** * Returns a string representation of this set. If the result of @@ -718,7 +606,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * U+000A, U+0020..U+007E. * @stable ICU 2.0 */ - virtual UnicodeString& toPattern(UnicodeString& result, + virtual UnicodeString& toPattern(UnicodeString& result U_LIFETIME_BOUND, UBool escapeUnprintable = false) const override; /** @@ -745,7 +633,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { */ UnicodeSet& applyIntPropertyValue(UProperty prop, int32_t value, - UErrorCode& ec); + UErrorCode& ec) U_LIFETIME_BOUND; /** * Modifies this set to contain those code points which have the @@ -778,7 +666,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { */ UnicodeSet& applyPropertyAlias(const UnicodeString& prop, const UnicodeString& value, - UErrorCode& ec); + UErrorCode& ec) U_LIFETIME_BOUND; /** * Returns the number of elements in this set (its cardinality). @@ -1119,7 +1007,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @see begin * @see end */ - inline U_HEADER_NESTED_NAMESPACE::USetCodePoints codePoints() const { + inline U_HEADER_NESTED_NAMESPACE::USetCodePoints codePoints() const U_LIFETIME_BOUND { return U_HEADER_NESTED_NAMESPACE::USetCodePoints(toUSet()); } @@ -1145,7 +1033,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @see begin * @see end */ - inline U_HEADER_NESTED_NAMESPACE::USetRanges ranges() const { + inline U_HEADER_NESTED_NAMESPACE::USetRanges ranges() const U_LIFETIME_BOUND { return U_HEADER_NESTED_NAMESPACE::USetRanges(toUSet()); } @@ -1169,11 +1057,10 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @see begin * @see end */ - inline U_HEADER_NESTED_NAMESPACE::USetStrings strings() const { + inline U_HEADER_NESTED_NAMESPACE::USetStrings strings() const U_LIFETIME_BOUND { return U_HEADER_NESTED_NAMESPACE::USetStrings(toUSet()); } -#ifndef U_HIDE_DRAFT_API /** * Returns a C++ iterator for iterating over all of the elements of this set. * Convenient all-in one iteration, but creates a std::u16string for each @@ -1192,28 +1079,27 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * \endcode * * @return an all-elements iterator. - * @draft ICU 77 + * @stable ICU 77 * @see end * @see codePoints * @see ranges * @see strings */ - inline U_HEADER_NESTED_NAMESPACE::USetElementIterator begin() const { + inline U_HEADER_NESTED_NAMESPACE::USetElementIterator begin() const U_LIFETIME_BOUND { return U_HEADER_NESTED_NAMESPACE::USetElements(toUSet()).begin(); } /** * @return an exclusive-end sentinel for iterating over all of the elements of this set. - * @draft ICU 77 + * @stable ICU 77 * @see begin * @see codePoints * @see ranges * @see strings */ - inline U_HEADER_NESTED_NAMESPACE::USetElementIterator end() const { + inline U_HEADER_NESTED_NAMESPACE::USetElementIterator end() const U_LIFETIME_BOUND { return U_HEADER_NESTED_NAMESPACE::USetElements(toUSet()).end(); } -#endif // U_HIDE_DRAFT_API /** * Adds the specified range to this set if it is not already @@ -1229,7 +1115,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * to this set. * @stable ICU 2.0 */ - UnicodeSet& add(UChar32 start, UChar32 end); + UnicodeSet& add(UChar32 start, UChar32 end) U_LIFETIME_BOUND; /** * Adds the specified character to this set if it is not already @@ -1241,7 +1127,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return this object, for chaining * @stable ICU 2.0 */ - UnicodeSet& add(UChar32 c); + UnicodeSet& add(UChar32 c) U_LIFETIME_BOUND; /** * Adds the specified multicharacter to this set if it is not already @@ -1254,7 +1140,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return this object, for chaining * @stable ICU 2.4 */ - UnicodeSet& add(const UnicodeString& s); + UnicodeSet& add(const UnicodeString& s) U_LIFETIME_BOUND; private: /** @@ -1275,7 +1161,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return this object, for chaining * @stable ICU 2.4 */ - UnicodeSet& addAll(const UnicodeString& s); + UnicodeSet& addAll(const UnicodeString& s) U_LIFETIME_BOUND; /** * Retains EACH of the characters in this string. Note: "ch" == {"c", "h"} @@ -1284,7 +1170,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return this object, for chaining * @stable ICU 2.4 */ - UnicodeSet& retainAll(const UnicodeString& s); + UnicodeSet& retainAll(const UnicodeString& s) U_LIFETIME_BOUND; /** * Complement EACH of the characters in this string. Note: "ch" == {"c", "h"} @@ -1293,7 +1179,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return this object, for chaining * @stable ICU 2.4 */ - UnicodeSet& complementAll(const UnicodeString& s); + UnicodeSet& complementAll(const UnicodeString& s) U_LIFETIME_BOUND; /** * Remove EACH of the characters in this string. Note: "ch" == {"c", "h"} @@ -1302,7 +1188,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return this object, for chaining * @stable ICU 2.4 */ - UnicodeSet& removeAll(const UnicodeString& s); + UnicodeSet& removeAll(const UnicodeString& s) U_LIFETIME_BOUND; /** * Makes a set from a multicharacter string. Thus "ch" => {"ch"} @@ -1335,7 +1221,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @param end last character, inclusive, of range * @stable ICU 2.0 */ - UnicodeSet& retain(UChar32 start, UChar32 end); + UnicodeSet& retain(UChar32 start, UChar32 end) U_LIFETIME_BOUND; /** @@ -1346,7 +1232,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return this object, for chaining * @stable ICU 2.0 */ - UnicodeSet& retain(UChar32 c); + UnicodeSet& retain(UChar32 c) U_LIFETIME_BOUND; /** * Retains only the specified string from this set if it is present. @@ -1358,7 +1244,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return this object, for chaining * @stable ICU 69 */ - UnicodeSet& retain(const UnicodeString &s); + UnicodeSet& retain(const UnicodeString& s) U_LIFETIME_BOUND; /** * Removes the specified range from this set if it is present. @@ -1373,7 +1259,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * from this set. * @stable ICU 2.0 */ - UnicodeSet& remove(UChar32 start, UChar32 end); + UnicodeSet& remove(UChar32 start, UChar32 end) U_LIFETIME_BOUND; /** * Removes the specified character from this set if it is present. @@ -1385,7 +1271,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return this object, for chaining * @stable ICU 2.0 */ - UnicodeSet& remove(UChar32 c); + UnicodeSet& remove(UChar32 c) U_LIFETIME_BOUND; /** * Removes the specified string from this set if it is present. @@ -1396,7 +1282,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return this object, for chaining * @stable ICU 2.4 */ - UnicodeSet& remove(const UnicodeString& s); + UnicodeSet& remove(const UnicodeString& s) U_LIFETIME_BOUND; /** * This is equivalent to @@ -1410,7 +1296,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * A frozen set will not be modified. * @stable ICU 2.0 */ - UnicodeSet& complement(); + UnicodeSet& complement() U_LIFETIME_BOUND; /** * Complements the specified range in this set. Any character in @@ -1424,7 +1310,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @param end last character, inclusive, of range * @stable ICU 2.0 */ - UnicodeSet& complement(UChar32 start, UChar32 end); + UnicodeSet& complement(UChar32 start, UChar32 end) U_LIFETIME_BOUND; /** * Complements the specified character in this set. The character @@ -1436,7 +1322,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return this object, for chaining * @stable ICU 2.0 */ - UnicodeSet& complement(UChar32 c); + UnicodeSet& complement(UChar32 c) U_LIFETIME_BOUND; /** * Complement the specified string in this set. @@ -1447,7 +1333,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return this object, for chaining * @stable ICU 2.4 */ - UnicodeSet& complement(const UnicodeString& s); + UnicodeSet& complement(const UnicodeString& s) U_LIFETIME_BOUND; /** * Adds all of the elements in the specified set to this set if @@ -1461,7 +1347,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @see #add(UChar32, UChar32) * @stable ICU 2.0 */ - UnicodeSet& addAll(const UnicodeSet& c); + UnicodeSet& addAll(const UnicodeSet& c) U_LIFETIME_BOUND; /** * Retains only the elements in this set that are contained in the @@ -1474,7 +1360,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @param c set that defines which elements this set will retain. * @stable ICU 2.0 */ - UnicodeSet& retainAll(const UnicodeSet& c); + UnicodeSet& retainAll(const UnicodeSet& c) U_LIFETIME_BOUND; /** * Removes from this set all of its elements that are contained in the @@ -1487,7 +1373,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * this set. * @stable ICU 2.0 */ - UnicodeSet& removeAll(const UnicodeSet& c); + UnicodeSet& removeAll(const UnicodeSet& c) U_LIFETIME_BOUND; /** * Complements in this set all elements contained in the specified @@ -1499,7 +1385,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * this set. * @stable ICU 2.4 */ - UnicodeSet& complementAll(const UnicodeSet& c); + UnicodeSet& complementAll(const UnicodeSet& c) U_LIFETIME_BOUND; /** * Removes all of the elements from this set. This set will be @@ -1507,7 +1393,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * A frozen set will not be modified. * @stable ICU 2.0 */ - UnicodeSet& clear(); + UnicodeSet& clear() U_LIFETIME_BOUND; /** * Close this set over the given attribute. For the attribute @@ -1536,7 +1422,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return a reference to this set. * @stable ICU 4.2 */ - UnicodeSet& closeOver(int32_t attribute); + UnicodeSet& closeOver(int32_t attribute) U_LIFETIME_BOUND; /** * Remove all strings from this set. @@ -1544,7 +1430,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * @return a reference to this set. * @stable ICU 4.2 */ - UnicodeSet &removeAllStrings(); + UnicodeSet& removeAllStrings() U_LIFETIME_BOUND; /** * Iteration method that returns the number of ranges contained in @@ -1629,7 +1515,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { * A frozen set will not be modified. * @stable ICU 2.4 */ - UnicodeSet& compact(); + UnicodeSet& compact() U_LIFETIME_BOUND; /** * Return the class ID for this class. This is useful only for @@ -1660,7 +1546,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { friend class USetAccess; - const UnicodeString* getString(int32_t index) const; + const UnicodeString* getString(int32_t index) const U_LIFETIME_BOUND; //---------------------------------------------------------------- // RuleBasedTransliterator support @@ -1683,7 +1569,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { //---------------------------------------------------------------- UnicodeSet(const UnicodeSet& o, UBool /* asThawed */); - UnicodeSet& copyFrom(const UnicodeSet& o, UBool asThawed); + UnicodeSet& copyFrom(const UnicodeSet& o, UBool asThawed) U_LIFETIME_BOUND; //---------------------------------------------------------------- // Implementation: Pattern parsing @@ -1694,13 +1580,58 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { const SymbolTable* symbols, UErrorCode& status); - void applyPattern(RuleCharacterIterator& chars, - const SymbolTable* symbols, - UnicodeString& rebuiltPat, + void applyPattern(const UnicodeString &pattern, + const ParsePosition& parsePosition, + RuleCharacterIterator &chars, + const SymbolTable *symbols, + UnicodeString &rebuiltPat, uint32_t options, - UnicodeSet& (UnicodeSet::*caseClosure)(int32_t attribute), - int32_t depth, - UErrorCode& ec); + UnicodeSet &(UnicodeSet::*caseClosure)(int32_t attribute), + UErrorCode &ec); + + // Recursive-descent predictive parsing. These functions parse the syntactic categories + // matching their name in the base grammar of PD UTR #56 (before the highlighted changes are + // applied). + // See https://www.unicode.org/reports/tr61/tr61-1.html#Set-Operations. + // `parseUnicodeSet` clears `*this` and makes it represent the parsed UnicodeSet; all other functions + // add the set represented by the parsed construct to `*this`. + + class Lexer; + + static UnicodeSet parseUnicodeSet(Lexer &lexer, + UnicodeString &rebuiltPat, + uint32_t options, + UnicodeSet &(UnicodeSet::*caseClosure)(int32_t attribute), + int32_t depth, + UErrorCode &ec); + + static UnicodeSet parseContent(Lexer &lexer, + UnicodeString &rebuiltPat, + uint32_t options, + UnicodeSet &(UnicodeSet::*caseClosure)(int32_t attribute), + int32_t depth, + bool &containsSetOperation, + UErrorCode &ec); + + void parseMutation(Lexer &lexer, + UnicodeString &rebuiltPat, + uint32_t options, + UnicodeSet &(UnicodeSet::*caseClosure)(int32_t attribute), + int32_t depth, + bool &containsSetOperation, + UErrorCode &ec); + + void parseSetOperations(Lexer &lexer, + UnicodeString &rebuiltPat, + uint32_t options, + UnicodeSet &(UnicodeSet::*caseClosure)(int32_t attribute), + int32_t depth, + UErrorCode &ec); + + static UnicodeSet parseElements(Lexer &lexer, + UnicodeString &rebuiltPat, + UErrorCode &ec); + void closeOverCaseInsensitive(bool simple); void closeOverAddCaseMappings(); @@ -1721,10 +1652,10 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { int32_t stringsSize() const; UBool stringsContains(const UnicodeString &s) const; - UnicodeString& _toPattern(UnicodeString& result, + UnicodeString& _toPattern(UnicodeString& result U_LIFETIME_BOUND, UBool escapeUnprintable) const; - UnicodeString& _generatePattern(UnicodeString& result, + UnicodeString& _generatePattern(UnicodeString& result U_LIFETIME_BOUND, UBool escapeUnprintable) const; static void _appendToPat(UnicodeString& buf, const UnicodeString& s, UBool escapeUnprintable); @@ -1752,9 +1683,6 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { static UBool resemblesPropertyPattern(const UnicodeString& pattern, int32_t pos); - static UBool resemblesPropertyPattern(RuleCharacterIterator& chars, - int32_t iterOpts); - /** * Parse the given property pattern at the given parse position * and set this UnicodeSet to the result. @@ -1796,11 +1724,7 @@ class U_COMMON_API UnicodeSet final : public UnicodeFilter { */ UnicodeSet& applyPropertyPattern(const UnicodeString& pattern, ParsePosition& ppos, - UErrorCode &ec); - - void applyPropertyPattern(RuleCharacterIterator& chars, - UnicodeString& rebuiltPat, - UErrorCode& ec); + UErrorCode& ec) U_LIFETIME_BOUND; /** * A filter that returns true if the given code point should be @@ -1863,19 +1787,19 @@ inline UBool UnicodeSet::isBogus() const { return fFlags & kIsBogus; } -inline UnicodeSet *UnicodeSet::fromUSet(USet *uset) { +inline UnicodeSet* UnicodeSet::fromUSet(USet* uset U_LIFETIME_BOUND) { return reinterpret_cast(uset); } -inline const UnicodeSet *UnicodeSet::fromUSet(const USet *uset) { +inline const UnicodeSet* UnicodeSet::fromUSet(const USet* uset U_LIFETIME_BOUND) { return reinterpret_cast(uset); } -inline USet *UnicodeSet::toUSet() { - return reinterpret_cast(this); +inline USet* UnicodeSet::toUSet() U_LIFETIME_BOUND { + return reinterpret_cast(this); } -inline const USet *UnicodeSet::toUSet() const { +inline const USet* UnicodeSet::toUSet() const U_LIFETIME_BOUND { return reinterpret_cast(this); } diff --git a/deps/icu-small/source/common/unicode/unistr.h b/deps/icu-small/source/common/unicode/unistr.h index 161b84527a60..bf1e98ec488d 100644 --- a/deps/icu-small/source/common/unicode/unistr.h +++ b/deps/icu-small/source/common/unicode/unistr.h @@ -1739,7 +1739,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a read-only alias UnicodeString object for the substring * @stable ICU 4.4 */ - UnicodeString tempSubString(int32_t start=0, int32_t length=INT32_MAX) const; + UnicodeString tempSubString(int32_t start=0, int32_t length=INT32_MAX) const U_LIFETIME_BOUND; /** * Create a temporary substring for the specified range. @@ -1751,7 +1751,8 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a read-only alias UnicodeString object for the substring * @stable ICU 4.4 */ - inline UnicodeString tempSubStringBetween(int32_t start, int32_t limit=INT32_MAX) const; + inline UnicodeString tempSubStringBetween(int32_t start, + int32_t limit = INT32_MAX) const U_LIFETIME_BOUND; /** * Convert the UnicodeString to UTF-8 and write the result @@ -1779,8 +1780,8 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 4.2 * @see toUTF8 */ - template - StringClass &toUTF8String(StringClass &result) const { + template + StringClass& toUTF8String(StringClass& result U_LIFETIME_BOUND) const { StringByteSink sbs(&result, length()); toUTF8(sbs); return result; @@ -1979,7 +1980,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 * @see fastCopyFrom */ - UnicodeString &operator=(const UnicodeString &srcText); + UnicodeString& operator=(const UnicodeString& srcText) U_LIFETIME_BOUND; /** * Almost the same as the assignment operator. @@ -2006,7 +2007,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.4 */ - UnicodeString &fastCopyFrom(const UnicodeString &src); + UnicodeString& fastCopyFrom(const UnicodeString& src) U_LIFETIME_BOUND; /** * Assignment operator. Replaces the characters in this UnicodeString @@ -2018,8 +2019,8 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 76 */ - template>> - inline UnicodeString &operator=(const S &src) { + template >> + inline UnicodeString& operator=(const S& src) U_LIFETIME_BOUND { unBogus(); return doReplace(0, length(), internal::toU16StringView(src)); } @@ -2032,7 +2033,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return *this * @stable ICU 56 */ - UnicodeString &operator=(UnicodeString &&src) noexcept; + UnicodeString& operator=(UnicodeString&& src) noexcept U_LIFETIME_BOUND; /** * Swap strings. @@ -2059,7 +2060,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& operator= (char16_t ch); + inline UnicodeString& operator=(char16_t ch) U_LIFETIME_BOUND; /** * Assignment operator. Replace the characters in this UnicodeString @@ -2068,7 +2069,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& operator= (UChar32 ch); + inline UnicodeString& operator=(UChar32 ch) U_LIFETIME_BOUND; /** * Set the text in the UnicodeString object to the characters @@ -2081,8 +2082,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.2 */ - inline UnicodeString& setTo(const UnicodeString& srcText, - int32_t srcStart); + inline UnicodeString& setTo(const UnicodeString& srcText, int32_t srcStart) U_LIFETIME_BOUND; /** * Set the text in the UnicodeString object to the characters @@ -2098,8 +2098,8 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& setTo(const UnicodeString& srcText, - int32_t srcStart, - int32_t srcLength); + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND; /** * Set the text in the UnicodeString object to the characters in @@ -2109,7 +2109,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& setTo(const UnicodeString& srcText); + inline UnicodeString& setTo(const UnicodeString& srcText) U_LIFETIME_BOUND; /** * Set the characters in the UnicodeString object to the characters @@ -2119,8 +2119,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& setTo(const char16_t *srcChars, - int32_t srcLength); + inline UnicodeString& setTo(const char16_t* srcChars, int32_t srcLength) U_LIFETIME_BOUND; /** * Set the characters in the UnicodeString object to the code unit @@ -2130,7 +2129,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& setTo(char16_t srcChar); + inline UnicodeString& setTo(char16_t srcChar) U_LIFETIME_BOUND; /** * Set the characters in the UnicodeString object to the code point @@ -2140,7 +2139,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& setTo(UChar32 srcChar); + inline UnicodeString& setTo(UChar32 srcChar) U_LIFETIME_BOUND; /** * Aliasing setTo() function, analogous to the readonly-aliasing char16_t* constructor. @@ -2165,9 +2164,9 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - UnicodeString &setTo(UBool isTerminated, - ConstChar16Ptr text, - int32_t textLength); + UnicodeString& setTo(UBool isTerminated, + ConstChar16Ptr text U_LIFETIME_BOUND, + int32_t textLength) U_LIFETIME_BOUND; /** * Aliasing setTo() function, analogous to the writable-aliasing char16_t* constructor. @@ -2188,9 +2187,9 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - UnicodeString &setTo(char16_t *buffer, + UnicodeString& setTo(char16_t* buffer U_LIFETIME_BOUND, int32_t buffLength, - int32_t buffCapacity); + int32_t buffCapacity) U_LIFETIME_BOUND; /** * Make this UnicodeString object invalid. @@ -2240,9 +2239,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return A reference to this * @stable ICU 2.0 */ - UnicodeString& setCharAt(int32_t offset, - char16_t ch); - + UnicodeString& setCharAt(int32_t offset, char16_t ch) U_LIFETIME_BOUND; /* Append operations */ @@ -2253,7 +2250,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& operator+= (char16_t ch); + inline UnicodeString& operator+=(char16_t ch) U_LIFETIME_BOUND; /** * Append operator. Append the code point `ch` to the UnicodeString @@ -2262,7 +2259,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& operator+= (UChar32 ch); + inline UnicodeString& operator+=(UChar32 ch) U_LIFETIME_BOUND; /** * Append operator. Append the characters in `srcText` to the @@ -2271,7 +2268,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& operator+= (const UnicodeString& srcText); + inline UnicodeString& operator+=(const UnicodeString& srcText) U_LIFETIME_BOUND; /** * Append operator. Appends the characters in `src` @@ -2283,8 +2280,8 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 76 */ - template>> - inline UnicodeString& operator+=(const S &src) { + template >> + inline UnicodeString& operator+=(const S& src) U_LIFETIME_BOUND { return doAppend(internal::toU16StringView(src)); } @@ -2303,8 +2300,8 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& append(const UnicodeString& srcText, - int32_t srcStart, - int32_t srcLength); + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND; /** * Append the characters in `srcText` to the UnicodeString object. @@ -2313,7 +2310,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& append(const UnicodeString& srcText); + inline UnicodeString& append(const UnicodeString& srcText) U_LIFETIME_BOUND; /** * Append the characters in `srcChars` in the range @@ -2328,9 +2325,9 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& append(const char16_t *srcChars, - int32_t srcStart, - int32_t srcLength); + inline UnicodeString& append(const char16_t* srcChars, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND; /** * Append the characters in `srcChars` to the UnicodeString object. @@ -2341,8 +2338,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& append(ConstChar16Ptr srcChars, - int32_t srcLength); + inline UnicodeString& append(ConstChar16Ptr srcChars, int32_t srcLength) U_LIFETIME_BOUND; /** * Appends the characters in `src` @@ -2354,8 +2350,8 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 76 */ - template>> - inline UnicodeString& append(const S &src) { + template >> + inline UnicodeString& append(const S& src) U_LIFETIME_BOUND { return doAppend(internal::toU16StringView(src)); } @@ -2365,7 +2361,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& append(char16_t srcChar); + inline UnicodeString& append(char16_t srcChar) U_LIFETIME_BOUND; /** * Append the code point `srcChar` to the UnicodeString object. @@ -2373,7 +2369,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - UnicodeString& append(UChar32 srcChar); + UnicodeString& append(UChar32 srcChar) U_LIFETIME_BOUND; #ifndef U_HIDE_DRAFT_API /** @@ -2402,9 +2398,9 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& insert(int32_t start, - const UnicodeString& srcText, - int32_t srcStart, - int32_t srcLength); + const UnicodeString& srcText, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND; /** * Insert the characters in `srcText` into the UnicodeString object @@ -2414,8 +2410,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& insert(int32_t start, - const UnicodeString& srcText); + inline UnicodeString& insert(int32_t start, const UnicodeString& srcText) U_LIFETIME_BOUND; /** * Insert the characters in `srcChars` in the range @@ -2431,9 +2426,9 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& insert(int32_t start, - const char16_t *srcChars, - int32_t srcStart, - int32_t srcLength); + const char16_t* srcChars, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND; /** * Insert the characters in `srcChars` into the UnicodeString object @@ -2445,8 +2440,8 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& insert(int32_t start, - ConstChar16Ptr srcChars, - int32_t srcLength); + ConstChar16Ptr srcChars, + int32_t srcLength) U_LIFETIME_BOUND; /** * Insert the code unit `srcChar` into the UnicodeString object at @@ -2456,8 +2451,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& insert(int32_t start, - char16_t srcChar); + inline UnicodeString& insert(int32_t start, char16_t srcChar) U_LIFETIME_BOUND; /** * Insert the code point `srcChar` into the UnicodeString object at @@ -2467,9 +2461,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& insert(int32_t start, - UChar32 srcChar); - + inline UnicodeString& insert(int32_t start, UChar32 srcChar) U_LIFETIME_BOUND; /* Replace operations */ @@ -2491,10 +2483,10 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& replace(int32_t start, - int32_t length, - const UnicodeString& srcText, - int32_t srcStart, - int32_t srcLength); + int32_t length, + const UnicodeString& srcText, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND; /** * Replace the characters in the range @@ -2509,8 +2501,8 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& replace(int32_t start, - int32_t length, - const UnicodeString& srcText); + int32_t length, + const UnicodeString& srcText) U_LIFETIME_BOUND; /** * Replace the characters in the range @@ -2530,10 +2522,10 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& replace(int32_t start, - int32_t length, - const char16_t *srcChars, - int32_t srcStart, - int32_t srcLength); + int32_t length, + const char16_t* srcChars, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND; /** * Replace the characters in the range @@ -2548,9 +2540,9 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& replace(int32_t start, - int32_t length, - ConstChar16Ptr srcChars, - int32_t srcLength); + int32_t length, + ConstChar16Ptr srcChars, + int32_t srcLength) U_LIFETIME_BOUND; /** * Replace the characters in the range @@ -2563,9 +2555,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& replace(int32_t start, - int32_t length, - char16_t srcChar); + inline UnicodeString& replace(int32_t start, int32_t length, char16_t srcChar) U_LIFETIME_BOUND; /** * Replace the characters in the range @@ -2578,7 +2568,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - UnicodeString& replace(int32_t start, int32_t length, UChar32 srcChar); + UnicodeString& replace(int32_t start, int32_t length, UChar32 srcChar) U_LIFETIME_BOUND; /** * Replace the characters in the range [`start`, `limit`) @@ -2590,8 +2580,8 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& replaceBetween(int32_t start, - int32_t limit, - const UnicodeString& srcText); + int32_t limit, + const UnicodeString& srcText) U_LIFETIME_BOUND; /** * Replace the characters in the range [`start`, `limit`) @@ -2608,10 +2598,10 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& replaceBetween(int32_t start, - int32_t limit, - const UnicodeString& srcText, - int32_t srcStart, - int32_t srcLimit); + int32_t limit, + const UnicodeString& srcText, + int32_t srcStart, + int32_t srcLimit) U_LIFETIME_BOUND; /** * Replace a substring of this object with the given text. @@ -2657,7 +2647,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& findAndReplace(const UnicodeString& oldText, - const UnicodeString& newText); + const UnicodeString& newText) U_LIFETIME_BOUND; /** * Replace all occurrences of characters in oldText with characters @@ -2671,9 +2661,9 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& findAndReplace(int32_t start, - int32_t length, - const UnicodeString& oldText, - const UnicodeString& newText); + int32_t length, + const UnicodeString& oldText, + const UnicodeString& newText) U_LIFETIME_BOUND; /** * Replace all occurrences of characters in oldText in the range @@ -2693,13 +2683,13 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ UnicodeString& findAndReplace(int32_t start, - int32_t length, - const UnicodeString& oldText, - int32_t oldStart, - int32_t oldLength, - const UnicodeString& newText, - int32_t newStart, - int32_t newLength); + int32_t length, + const UnicodeString& oldText, + int32_t oldStart, + int32_t oldLength, + const UnicodeString& newText, + int32_t newStart, + int32_t newLength) U_LIFETIME_BOUND; /* Remove operations */ @@ -2712,7 +2702,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @see setToBogus * @stable ICU 2.0 */ - inline UnicodeString& remove(); + inline UnicodeString& remove() U_LIFETIME_BOUND; /** * Remove the characters in the range @@ -2723,7 +2713,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ inline UnicodeString& remove(int32_t start, - int32_t length = static_cast(INT32_MAX)); + int32_t length = static_cast(INT32_MAX)) U_LIFETIME_BOUND; /** * Remove the characters in the range @@ -2733,8 +2723,8 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& removeBetween(int32_t start, - int32_t limit = static_cast(INT32_MAX)); + inline UnicodeString& + removeBetween(int32_t start, int32_t limit = static_cast(INT32_MAX)) U_LIFETIME_BOUND; /** * Retain only the characters in the range @@ -2745,7 +2735,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 4.4 */ - inline UnicodeString &retainBetween(int32_t start, int32_t limit = INT32_MAX); + inline UnicodeString& retainBetween(int32_t start, int32_t limit = INT32_MAX) U_LIFETIME_BOUND; /* Length operations */ @@ -2790,7 +2780,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - UnicodeString& trim(); + UnicodeString& trim() U_LIFETIME_BOUND; /* Miscellaneous operations */ @@ -2799,7 +2789,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& reverse(); + inline UnicodeString& reverse() U_LIFETIME_BOUND; /** * Reverse the range [`start`, `start + length`) in @@ -2809,8 +2799,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return a reference to this * @stable ICU 2.0 */ - inline UnicodeString& reverse(int32_t start, - int32_t length); + inline UnicodeString& reverse(int32_t start, int32_t length) U_LIFETIME_BOUND; /** * Convert the characters in this to UPPER CASE following the conventions of @@ -2818,7 +2807,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return A reference to this. * @stable ICU 2.0 */ - UnicodeString& toUpper(); + UnicodeString& toUpper() U_LIFETIME_BOUND; /** * Convert the characters in this to UPPER CASE following the conventions of @@ -2827,7 +2816,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return A reference to this. * @stable ICU 2.0 */ - UnicodeString& toUpper(const Locale& locale); + UnicodeString& toUpper(const Locale& locale) U_LIFETIME_BOUND; /** * Convert the characters in this to lower case following the conventions of @@ -2835,7 +2824,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return A reference to this. * @stable ICU 2.0 */ - UnicodeString& toLower(); + UnicodeString& toLower() U_LIFETIME_BOUND; /** * Convert the characters in this to lower case following the conventions of @@ -2844,7 +2833,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return A reference to this. * @stable ICU 2.0 */ - UnicodeString& toLower(const Locale& locale); + UnicodeString& toLower(const Locale& locale) U_LIFETIME_BOUND; #if !UCONFIG_NO_BREAK_ITERATION @@ -2874,7 +2863,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return A reference to this. * @stable ICU 2.1 */ - UnicodeString &toTitle(BreakIterator *titleIter); + UnicodeString& toTitle(BreakIterator* titleIter) U_LIFETIME_BOUND; /** * Titlecase this string. @@ -2903,7 +2892,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return A reference to this. * @stable ICU 2.1 */ - UnicodeString &toTitle(BreakIterator *titleIter, const Locale &locale); + UnicodeString& toTitle(BreakIterator* titleIter, const Locale& locale) U_LIFETIME_BOUND; /** * Titlecase this string, with options. @@ -2935,7 +2924,9 @@ class U_COMMON_API UnicodeString : public Replaceable * @return A reference to this. * @stable ICU 3.8 */ - UnicodeString &toTitle(BreakIterator *titleIter, const Locale &locale, uint32_t options); + UnicodeString& toTitle(BreakIterator* titleIter, + const Locale& locale, + uint32_t options) U_LIFETIME_BOUND; #endif @@ -2952,7 +2943,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @return A reference to this. * @stable ICU 2.0 */ - UnicodeString &foldCase(uint32_t options=0 /*U_FOLD_CASE_DEFAULT*/); + UnicodeString& foldCase(uint32_t options = 0 /*U_FOLD_CASE_DEFAULT*/) U_LIFETIME_BOUND; //======================================== // Access to the internal buffer @@ -3001,7 +2992,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @see getTerminatedBuffer() * @stable ICU 2.0 */ - char16_t *getBuffer(int32_t minCapacity); + char16_t* getBuffer(int32_t minCapacity) U_LIFETIME_BOUND; /** * Release a read/write buffer on a UnicodeString object with an @@ -3055,7 +3046,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @see getTerminatedBuffer() * @stable ICU 2.0 */ - inline const char16_t *getBuffer() const; + inline const char16_t* getBuffer() const U_LIFETIME_BOUND; /** * Get a read-only pointer to the internal buffer, @@ -3090,7 +3081,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @see getBuffer() * @stable ICU 2.2 */ - const char16_t *getTerminatedBuffer(); + const char16_t* getTerminatedBuffer() U_LIFETIME_BOUND; /** * Converts to a std::u16string_view. @@ -3371,7 +3362,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @stable ICU 2.0 */ UnicodeString(UBool isTerminated, - ConstChar16Ptr text, + ConstChar16Ptr text U_LIFETIME_BOUND, int32_t textLength); /** @@ -3392,7 +3383,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @param buffCapacity The size of `buffer` in char16_ts. * @stable ICU 2.0 */ - UnicodeString(char16_t *buffer, int32_t buffLength, int32_t buffCapacity); + UnicodeString(char16_t* buffer U_LIFETIME_BOUND, int32_t buffLength, int32_t buffCapacity); #if !U_CHAR16_IS_TYPEDEF /** @@ -3403,7 +3394,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @param buffCapacity buffer capacity * @stable ICU 59 */ - UnicodeString(uint16_t *buffer, int32_t buffLength, int32_t buffCapacity) : + UnicodeString(uint16_t* buffer U_LIFETIME_BOUND, int32_t buffLength, int32_t buffCapacity) : UnicodeString(Char16Ptr(buffer), buffLength, buffCapacity) {} #endif @@ -3417,7 +3408,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @param buffCapacity buffer capacity * @stable ICU 59 */ - UnicodeString(wchar_t *buffer, int32_t buffLength, int32_t buffCapacity) : + UnicodeString(wchar_t* buffer U_LIFETIME_BOUND, int32_t buffLength, int32_t buffCapacity) : UnicodeString(Char16Ptr(buffer), buffLength, buffCapacity) {} #endif @@ -3658,8 +3649,8 @@ class U_COMMON_API UnicodeString : public Replaceable * @param text The string view to alias for the UnicodeString. * @stable ICU 76 */ - template>> - static inline UnicodeString readOnlyAlias(const S &text) { + template >> + static inline UnicodeString readOnlyAlias(const S& text U_LIFETIME_BOUND) { return readOnlyAliasFromU16StringView(internal::toU16StringView(text)); } @@ -3682,7 +3673,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @param text The UnicodeString to alias. * @stable ICU 76 */ - static inline UnicodeString readOnlyAlias(const UnicodeString &text) { + static inline UnicodeString readOnlyAlias(const UnicodeString& text U_LIFETIME_BOUND) { return readOnlyAliasFromUnicodeString(text); } @@ -3813,11 +3804,11 @@ class U_COMMON_API UnicodeString : public Replaceable virtual UChar32 getChar32At(int32_t offset) const override; private: - static UnicodeString readOnlyAliasFromU16StringView(std::u16string_view text); - static UnicodeString readOnlyAliasFromUnicodeString(const UnicodeString &text); + static UnicodeString readOnlyAliasFromU16StringView(std::u16string_view text U_LIFETIME_BOUND); + static UnicodeString readOnlyAliasFromUnicodeString(const UnicodeString& text U_LIFETIME_BOUND); // For char* constructors. Could be made public. - UnicodeString &setToUTF8(StringPiece utf8); + UnicodeString& setToUTF8(StringPiece utf8) U_LIFETIME_BOUND; // For extract(char*). // We could make a toUTF8(target, capacity, errorCode) public but not // this version: New API will be cleaner if we make callers create substrings @@ -3919,32 +3910,35 @@ class U_COMMON_API UnicodeString : public Replaceable inline char16_t doCharAt(int32_t offset) const; UnicodeString& doReplace(int32_t start, - int32_t length, - const UnicodeString& srcText, - int32_t srcStart, - int32_t srcLength); + int32_t length, + const UnicodeString& srcText, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND; UnicodeString& doReplace(int32_t start, - int32_t length, - const char16_t *srcChars, - int32_t srcStart, - int32_t srcLength); - UnicodeString& doReplace(int32_t start, int32_t length, std::u16string_view src); + int32_t length, + const char16_t* srcChars, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND; + UnicodeString& doReplace(int32_t start, int32_t length, std::u16string_view src) U_LIFETIME_BOUND; - UnicodeString& doAppend(const UnicodeString& src, int32_t srcStart, int32_t srcLength); - UnicodeString& doAppend(const char16_t *srcChars, int32_t srcStart, int32_t srcLength); - UnicodeString& doAppend(std::u16string_view src); + UnicodeString& doAppend(const UnicodeString& src, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND; + UnicodeString& doAppend(const char16_t* srcChars, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND; + UnicodeString& doAppend(std::u16string_view src) U_LIFETIME_BOUND; - UnicodeString& doReverse(int32_t start, - int32_t length); + UnicodeString& doReverse(int32_t start, int32_t length) U_LIFETIME_BOUND; // calculate hash code int32_t doHashCode() const; // get pointer to start of array // these do not check for kOpenGetBuffer, unlike the public getBuffer() function - inline char16_t* getArrayStart(); - inline const char16_t* getArrayStart() const; + inline char16_t* getArrayStart() U_LIFETIME_BOUND; + inline const char16_t* getArrayStart() const U_LIFETIME_BOUND; inline UBool hasShortLength() const; inline int32_t getShortLength() const; @@ -3977,7 +3971,7 @@ class U_COMMON_API UnicodeString : public Replaceable void unBogus(); // implements assignment operator, copy constructor, and fastCopyFrom() - UnicodeString ©From(const UnicodeString &src, UBool fastCopy=false); + UnicodeString& copyFrom(const UnicodeString& src, UBool fastCopy = false) U_LIFETIME_BOUND; // Copies just the fields without memory management. void copyFieldsFrom(UnicodeString &src, UBool setSrcToBogus) noexcept; @@ -4043,12 +4037,12 @@ class U_COMMON_API UnicodeString : public Replaceable * The stringCaseMapper has the same type UStringCaseMapper * as in ustr_imp.h for ustrcase_map(). */ - UnicodeString & - caseMap(int32_t caseLocale, uint32_t options, + UnicodeString& caseMap(int32_t caseLocale, + uint32_t options, #if !UCONFIG_NO_BREAK_ITERATION - BreakIterator *iter, + BreakIterator* iter, #endif - UStringCaseMapper *stringCaseMapper); + UStringCaseMapper* stringCaseMapper) U_LIFETIME_BOUND; // ref counting void addRef(); @@ -4224,13 +4218,13 @@ UnicodeString::pinIndices(int32_t& start, } inline char16_t* -UnicodeString::getArrayStart() { +UnicodeString::getArrayStart() U_LIFETIME_BOUND { return (fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) ? fUnion.fStackFields.fBuffer : fUnion.fFields.fArray; } inline const char16_t* -UnicodeString::getArrayStart() const { +UnicodeString::getArrayStart() const U_LIFETIME_BOUND { return (fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) ? fUnion.fStackFields.fBuffer : fUnion.fFields.fArray; } @@ -4303,7 +4297,7 @@ UnicodeString::isBufferWritable() const } inline const char16_t * -UnicodeString::getBuffer() const { +UnicodeString::getBuffer() const U_LIFETIME_BOUND { if(fUnion.fFields.fLengthAndFlags&(kIsBogus|kOpenGetBuffer)) { return nullptr; } else if(fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) { @@ -4789,64 +4783,64 @@ UnicodeString::endsWith(const char16_t *srcChars, //======================================== inline UnicodeString& UnicodeString::replace(int32_t start, - int32_t _length, - const UnicodeString& srcText) + int32_t _length, + const UnicodeString& srcText) U_LIFETIME_BOUND { return doReplace(start, _length, srcText, 0, srcText.length()); } inline UnicodeString& UnicodeString::replace(int32_t start, - int32_t _length, - const UnicodeString& srcText, - int32_t srcStart, - int32_t srcLength) + int32_t _length, + const UnicodeString& srcText, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND { return doReplace(start, _length, srcText, srcStart, srcLength); } inline UnicodeString& UnicodeString::replace(int32_t start, - int32_t _length, - ConstChar16Ptr srcChars, - int32_t srcLength) + int32_t _length, + ConstChar16Ptr srcChars, + int32_t srcLength) U_LIFETIME_BOUND { return doReplace(start, _length, srcChars, 0, srcLength); } inline UnicodeString& UnicodeString::replace(int32_t start, - int32_t _length, - const char16_t *srcChars, - int32_t srcStart, - int32_t srcLength) + int32_t _length, + const char16_t* srcChars, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND { return doReplace(start, _length, srcChars, srcStart, srcLength); } inline UnicodeString& UnicodeString::replace(int32_t start, - int32_t _length, - char16_t srcChar) + int32_t _length, + char16_t srcChar) U_LIFETIME_BOUND { return doReplace(start, _length, &srcChar, 0, 1); } inline UnicodeString& UnicodeString::replaceBetween(int32_t start, - int32_t limit, - const UnicodeString& srcText) + int32_t limit, + const UnicodeString& srcText) U_LIFETIME_BOUND { return doReplace(start, limit - start, srcText, 0, srcText.length()); } inline UnicodeString& UnicodeString::replaceBetween(int32_t start, - int32_t limit, - const UnicodeString& srcText, - int32_t srcStart, - int32_t srcLimit) + int32_t limit, + const UnicodeString& srcText, + int32_t srcStart, + int32_t srcLimit) U_LIFETIME_BOUND { return doReplace(start, limit - start, srcText, srcStart, srcLimit - srcStart); } inline UnicodeString& UnicodeString::findAndReplace(const UnicodeString& oldText, - const UnicodeString& newText) + const UnicodeString& newText) U_LIFETIME_BOUND { return findAndReplace(0, length(), oldText, 0, oldText.length(), newText, 0, newText.length()); } inline UnicodeString& UnicodeString::findAndReplace(int32_t start, - int32_t _length, - const UnicodeString& oldText, - const UnicodeString& newText) + int32_t _length, + const UnicodeString& oldText, + const UnicodeString& newText) U_LIFETIME_BOUND { return findAndReplace(start, _length, oldText, 0, oldText.length(), newText, 0, newText.length()); } @@ -4898,7 +4892,7 @@ UnicodeString::extractBetween(int32_t start, } inline UnicodeString -UnicodeString::tempSubStringBetween(int32_t start, int32_t limit) const { +UnicodeString::tempSubStringBetween(int32_t start, int32_t limit) const U_LIFETIME_BOUND { return tempSubString(start, limit - start); } @@ -4964,17 +4958,17 @@ UnicodeString::setArray(char16_t *array, int32_t len, int32_t capacity) { } inline UnicodeString& -UnicodeString::operator= (char16_t ch) +UnicodeString::operator=(char16_t ch) U_LIFETIME_BOUND { return doReplace(0, length(), &ch, 0, 1); } inline UnicodeString& -UnicodeString::operator= (UChar32 ch) +UnicodeString::operator=(UChar32 ch) U_LIFETIME_BOUND { return replace(0, length(), ch); } inline UnicodeString& UnicodeString::setTo(const UnicodeString& srcText, - int32_t srcStart, - int32_t srcLength) + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND { unBogus(); return doReplace(0, length(), srcText, srcStart, srcLength); @@ -4982,7 +4976,7 @@ UnicodeString::setTo(const UnicodeString& srcText, inline UnicodeString& UnicodeString::setTo(const UnicodeString& srcText, - int32_t srcStart) + int32_t srcStart) U_LIFETIME_BOUND { unBogus(); srcText.pinIndex(srcStart); @@ -4990,28 +4984,28 @@ UnicodeString::setTo(const UnicodeString& srcText, } inline UnicodeString& -UnicodeString::setTo(const UnicodeString& srcText) +UnicodeString::setTo(const UnicodeString& srcText) U_LIFETIME_BOUND { return copyFrom(srcText); } inline UnicodeString& -UnicodeString::setTo(const char16_t *srcChars, - int32_t srcLength) +UnicodeString::setTo(const char16_t* srcChars, + int32_t srcLength) U_LIFETIME_BOUND { unBogus(); return doReplace(0, length(), srcChars, 0, srcLength); } inline UnicodeString& -UnicodeString::setTo(char16_t srcChar) +UnicodeString::setTo(char16_t srcChar) U_LIFETIME_BOUND { unBogus(); return doReplace(0, length(), &srcChar, 0, 1); } inline UnicodeString& -UnicodeString::setTo(UChar32 srcChar) +UnicodeString::setTo(UChar32 srcChar) U_LIFETIME_BOUND { unBogus(); return replace(0, length(), srcChar); @@ -5019,80 +5013,80 @@ UnicodeString::setTo(UChar32 srcChar) inline UnicodeString& UnicodeString::append(const UnicodeString& srcText, - int32_t srcStart, - int32_t srcLength) + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND { return doAppend(srcText, srcStart, srcLength); } inline UnicodeString& -UnicodeString::append(const UnicodeString& srcText) +UnicodeString::append(const UnicodeString& srcText) U_LIFETIME_BOUND { return doAppend(srcText, 0, srcText.length()); } inline UnicodeString& -UnicodeString::append(const char16_t *srcChars, - int32_t srcStart, - int32_t srcLength) +UnicodeString::append(const char16_t* srcChars, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND { return doAppend(srcChars, srcStart, srcLength); } inline UnicodeString& UnicodeString::append(ConstChar16Ptr srcChars, - int32_t srcLength) + int32_t srcLength) U_LIFETIME_BOUND { return doAppend(srcChars, 0, srcLength); } inline UnicodeString& -UnicodeString::append(char16_t srcChar) +UnicodeString::append(char16_t srcChar) U_LIFETIME_BOUND { return doAppend(&srcChar, 0, 1); } inline UnicodeString& -UnicodeString::operator+= (char16_t ch) +UnicodeString::operator+=(char16_t ch) U_LIFETIME_BOUND { return doAppend(&ch, 0, 1); } inline UnicodeString& -UnicodeString::operator+= (UChar32 ch) { +UnicodeString::operator+=(UChar32 ch) U_LIFETIME_BOUND { return append(ch); } inline UnicodeString& -UnicodeString::operator+= (const UnicodeString& srcText) +UnicodeString::operator+=(const UnicodeString& srcText) U_LIFETIME_BOUND { return doAppend(srcText, 0, srcText.length()); } inline UnicodeString& UnicodeString::insert(int32_t start, - const UnicodeString& srcText, - int32_t srcStart, - int32_t srcLength) + const UnicodeString& srcText, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND { return doReplace(start, 0, srcText, srcStart, srcLength); } inline UnicodeString& UnicodeString::insert(int32_t start, - const UnicodeString& srcText) + const UnicodeString& srcText) U_LIFETIME_BOUND { return doReplace(start, 0, srcText, 0, srcText.length()); } inline UnicodeString& UnicodeString::insert(int32_t start, - const char16_t *srcChars, - int32_t srcStart, - int32_t srcLength) + const char16_t* srcChars, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND { return doReplace(start, 0, srcChars, srcStart, srcLength); } inline UnicodeString& UnicodeString::insert(int32_t start, - ConstChar16Ptr srcChars, - int32_t srcLength) + ConstChar16Ptr srcChars, + int32_t srcLength) U_LIFETIME_BOUND { return doReplace(start, 0, srcChars, 0, srcLength); } inline UnicodeString& UnicodeString::insert(int32_t start, - char16_t srcChar) + char16_t srcChar) U_LIFETIME_BOUND { return doReplace(start, 0, &srcChar, 0, 1); } inline UnicodeString& UnicodeString::insert(int32_t start, - UChar32 srcChar) + UChar32 srcChar) U_LIFETIME_BOUND { return replace(start, 0, srcChar); } inline UnicodeString& -UnicodeString::remove() +UnicodeString::remove() U_LIFETIME_BOUND { // remove() of a bogus string makes the string empty and non-bogus if(isBogus()) { @@ -5105,7 +5099,7 @@ UnicodeString::remove() inline UnicodeString& UnicodeString::remove(int32_t start, - int32_t _length) + int32_t _length) U_LIFETIME_BOUND { if(start <= 0 && _length == INT32_MAX) { // remove(guaranteed everything) of a bogus string makes the string empty and non-bogus @@ -5116,11 +5110,11 @@ UnicodeString::remove(int32_t start, inline UnicodeString& UnicodeString::removeBetween(int32_t start, - int32_t limit) + int32_t limit) U_LIFETIME_BOUND { return doReplace(start, limit - start, nullptr, 0, 0); } -inline UnicodeString & -UnicodeString::retainBetween(int32_t start, int32_t limit) { +inline UnicodeString& +UnicodeString::retainBetween(int32_t start, int32_t limit) U_LIFETIME_BOUND { truncate(limit); return doReplace(0, start, nullptr, 0, 0); } @@ -5141,12 +5135,12 @@ UnicodeString::truncate(int32_t targetLength) } inline UnicodeString& -UnicodeString::reverse() +UnicodeString::reverse() U_LIFETIME_BOUND { return doReverse(0, length()); } inline UnicodeString& UnicodeString::reverse(int32_t start, - int32_t _length) + int32_t _length) U_LIFETIME_BOUND { return doReverse(start, _length); } U_NAMESPACE_END diff --git a/deps/icu-small/source/common/unicode/unorm2.h b/deps/icu-small/source/common/unicode/unorm2.h index 48f614d74fbf..b36dbedf1d00 100644 --- a/deps/icu-small/source/common/unicode/unorm2.h +++ b/deps/icu-small/source/common/unicode/unorm2.h @@ -256,8 +256,10 @@ unorm2_getInstance(const char *packageName, * @return the requested UNormalizer2, if successful * @stable ICU 4.4 */ -U_CAPI UNormalizer2 * U_EXPORT2 -unorm2_openFiltered(const UNormalizer2 *norm2, const USet *filterSet, UErrorCode *pErrorCode); +U_CAPI UNormalizer2* U_EXPORT2 +unorm2_openFiltered(const UNormalizer2* norm2 U_LIFETIME_BOUND, + const USet* filterSet U_LIFETIME_BOUND, + UErrorCode* pErrorCode); /** * Closes a UNormalizer2 instance from unorm2_openFiltered(). diff --git a/deps/icu-small/source/common/unicode/urename.h b/deps/icu-small/source/common/unicode/urename.h index af4a18ec83d6..1c89429f3b07 100644 --- a/deps/icu-small/source/common/unicode/urename.h +++ b/deps/icu-small/source/common/unicode/urename.h @@ -450,6 +450,7 @@ #define ubidi_getLogicalIndex U_ICU_ENTRY_POINT_RENAME(ubidi_getLogicalIndex) #define ubidi_getLogicalMap U_ICU_ENTRY_POINT_RENAME(ubidi_getLogicalMap) #define ubidi_getLogicalRun U_ICU_ENTRY_POINT_RENAME(ubidi_getLogicalRun) +#define ubidi_getMFOption U_ICU_ENTRY_POINT_RENAME(ubidi_getMFOption) #define ubidi_getMaxValue U_ICU_ENTRY_POINT_RENAME(ubidi_getMaxValue) #define ubidi_getMemory U_ICU_ENTRY_POINT_RENAME(ubidi_getMemory) #define ubidi_getMirror U_ICU_ENTRY_POINT_RENAME(ubidi_getMirror) @@ -474,6 +475,7 @@ #define ubidi_isJoinControl U_ICU_ENTRY_POINT_RENAME(ubidi_isJoinControl) #define ubidi_isMirrored U_ICU_ENTRY_POINT_RENAME(ubidi_isMirrored) #define ubidi_isOrderParagraphsLTR U_ICU_ENTRY_POINT_RENAME(ubidi_isOrderParagraphsLTR) +#define ubidi_isolate U_ICU_ENTRY_POINT_RENAME(ubidi_isolate) #define ubidi_open U_ICU_ENTRY_POINT_RENAME(ubidi_open) #define ubidi_openSized U_ICU_ENTRY_POINT_RENAME(ubidi_openSized) #define ubidi_orderParagraphsLTR U_ICU_ENTRY_POINT_RENAME(ubidi_orderParagraphsLTR) diff --git a/deps/icu-small/source/common/unicode/ures.h b/deps/icu-small/source/common/unicode/ures.h index babc01d426a6..6cb938ffa240 100644 --- a/deps/icu-small/source/common/unicode/ures.h +++ b/deps/icu-small/source/common/unicode/ures.h @@ -283,7 +283,7 @@ U_NAMESPACE_END * @deprecated ICU 2.8 Use ures_getVersion instead. */ U_DEPRECATED const char* U_EXPORT2 -ures_getVersionNumber(const UResourceBundle* resourceBundle); +ures_getVersionNumber(const UResourceBundle* resourceBundle U_LIFETIME_BOUND); #endif /* U_HIDE_DEPRECATED_API */ /** @@ -313,8 +313,7 @@ ures_getVersion(const UResourceBundle* resB, * @deprecated ICU 2.8 Use ures_getLocaleByType instead. */ U_DEPRECATED const char* U_EXPORT2 -ures_getLocale(const UResourceBundle* resourceBundle, - UErrorCode* status); +ures_getLocale(const UResourceBundle* resourceBundle U_LIFETIME_BOUND, UErrorCode* status); #endif /* U_HIDE_DEPRECATED_API */ /** @@ -330,7 +329,7 @@ ures_getLocale(const UResourceBundle* resourceBundle, * @stable ICU 2.8 */ U_CAPI const char* U_EXPORT2 -ures_getLocaleByType(const UResourceBundle* resourceBundle, +ures_getLocaleByType(const UResourceBundle* resourceBundle U_LIFETIME_BOUND, ULocDataLocaleType type, UErrorCode* status); @@ -377,7 +376,7 @@ ures_openFillIn(UResourceBundle *r, * @stable ICU 2.0 */ U_CAPI const UChar* U_EXPORT2 -ures_getString(const UResourceBundle* resourceBundle, +ures_getString(const UResourceBundle* resourceBundle U_LIFETIME_BOUND, int32_t* len, UErrorCode* status); @@ -428,11 +427,12 @@ ures_getString(const UResourceBundle* resourceBundle, * @see u_strToUTF8 * @stable ICU 3.6 */ -U_CAPI const char * U_EXPORT2 -ures_getUTF8String(const UResourceBundle *resB, - char *dest, int32_t *length, +U_CAPI const char* U_EXPORT2 +ures_getUTF8String(const UResourceBundle* resB, + char* dest U_LIFETIME_BOUND, + int32_t* length, UBool forceCopy, - UErrorCode *status); + UErrorCode* status); /** * Returns a binary data from a binary resource. @@ -452,7 +452,7 @@ ures_getUTF8String(const UResourceBundle *resB, * @stable ICU 2.0 */ U_CAPI const uint8_t* U_EXPORT2 -ures_getBinary(const UResourceBundle* resourceBundle, +ures_getBinary(const UResourceBundle* resourceBundle U_LIFETIME_BOUND, int32_t* len, UErrorCode* status); @@ -474,7 +474,7 @@ ures_getBinary(const UResourceBundle* resourceBundle, * @stable ICU 2.0 */ U_CAPI const int32_t* U_EXPORT2 -ures_getIntVector(const UResourceBundle* resourceBundle, +ures_getIntVector(const UResourceBundle* resourceBundle U_LIFETIME_BOUND, int32_t* len, UErrorCode* status); @@ -550,8 +550,8 @@ ures_getType(const UResourceBundle *resourceBundle); * @return a key associated to this resource, or NULL if it doesn't have a key * @stable ICU 2.0 */ -U_CAPI const char * U_EXPORT2 -ures_getKey(const UResourceBundle *resourceBundle); +U_CAPI const char* U_EXPORT2 +ures_getKey(const UResourceBundle* resourceBundle U_LIFETIME_BOUND); /* ITERATION API This API provides means for iterating through a resource @@ -589,9 +589,9 @@ ures_hasNext(const UResourceBundle *resourceBundle); * @stable ICU 2.0 */ U_CAPI UResourceBundle* U_EXPORT2 -ures_getNextResource(UResourceBundle *resourceBundle, - UResourceBundle *fillIn, - UErrorCode *status); +ures_getNextResource(UResourceBundle* resourceBundle, + UResourceBundle* fillIn U_LIFETIME_BOUND, + UErrorCode* status); /** * Returns the next string in a given resource or NULL if there are no more resources @@ -606,10 +606,10 @@ ures_getNextResource(UResourceBundle *resourceBundle, * @stable ICU 2.0 */ U_CAPI const UChar* U_EXPORT2 -ures_getNextString(UResourceBundle *resourceBundle, +ures_getNextString(UResourceBundle* resourceBundle U_LIFETIME_BOUND, int32_t* len, - const char ** key, - UErrorCode *status); + const char** key, + UErrorCode* status); /** * Returns the resource in a given resource at the specified index. Features a fill-in parameter. @@ -624,10 +624,10 @@ ures_getNextString(UResourceBundle *resourceBundle, * @stable ICU 2.0 */ U_CAPI UResourceBundle* U_EXPORT2 -ures_getByIndex(const UResourceBundle *resourceBundle, +ures_getByIndex(const UResourceBundle* resourceBundle, int32_t indexR, - UResourceBundle *fillIn, - UErrorCode *status); + UResourceBundle* fillIn U_LIFETIME_BOUND, + UErrorCode* status); /** * Returns the string in a given resource at the specified index. @@ -641,10 +641,10 @@ ures_getByIndex(const UResourceBundle *resourceBundle, * @stable ICU 2.0 */ U_CAPI const UChar* U_EXPORT2 -ures_getStringByIndex(const UResourceBundle *resourceBundle, +ures_getStringByIndex(const UResourceBundle* resourceBundle U_LIFETIME_BOUND, int32_t indexS, int32_t* len, - UErrorCode *status); + UErrorCode* status); /** * Returns a UTF-8 string from a resource at the specified index. @@ -694,12 +694,13 @@ ures_getStringByIndex(const UResourceBundle *resourceBundle, * @see u_strToUTF8 * @stable ICU 3.6 */ -U_CAPI const char * U_EXPORT2 -ures_getUTF8StringByIndex(const UResourceBundle *resB, +U_CAPI const char* U_EXPORT2 +ures_getUTF8StringByIndex(const UResourceBundle* resB, int32_t stringIndex, - char *dest, int32_t *pLength, + char* dest U_LIFETIME_BOUND, + int32_t* pLength, UBool forceCopy, - UErrorCode *status); + UErrorCode* status); /** * Returns a resource in a given resource that has a given key. This procedure works only with table @@ -714,10 +715,10 @@ ures_getUTF8StringByIndex(const UResourceBundle *resB, * @stable ICU 2.0 */ U_CAPI UResourceBundle* U_EXPORT2 -ures_getByKey(const UResourceBundle *resourceBundle, +ures_getByKey(const UResourceBundle* resourceBundle, const char* key, - UResourceBundle *fillIn, - UErrorCode *status); + UResourceBundle* fillIn U_LIFETIME_BOUND, + UErrorCode* status); /** * Returns a string in a given resource that has a given key. This procedure works only with table @@ -732,10 +733,10 @@ ures_getByKey(const UResourceBundle *resourceBundle, * @stable ICU 2.0 */ U_CAPI const UChar* U_EXPORT2 -ures_getStringByKey(const UResourceBundle *resB, +ures_getStringByKey(const UResourceBundle* resB U_LIFETIME_BOUND, const char* key, int32_t* len, - UErrorCode *status); + UErrorCode* status); /** * Returns a UTF-8 string from a resource and a key. @@ -787,12 +788,13 @@ ures_getStringByKey(const UResourceBundle *resB, * @see u_strToUTF8 * @stable ICU 3.6 */ -U_CAPI const char * U_EXPORT2 -ures_getUTF8StringByKey(const UResourceBundle *resB, - const char *key, - char *dest, int32_t *pLength, +U_CAPI const char* U_EXPORT2 +ures_getUTF8StringByKey(const UResourceBundle* resB, + const char* key, + char* dest U_LIFETIME_BOUND, + int32_t* pLength, UBool forceCopy, - UErrorCode *status); + UErrorCode* status); #if U_SHOW_CPLUSPLUS_API #include "unicode/unistr.h" @@ -810,7 +812,7 @@ U_NAMESPACE_BEGIN * @stable ICU 2.0 */ inline UnicodeString -ures_getUnicodeString(const UResourceBundle *resB, UErrorCode* status) { +ures_getUnicodeString(const UResourceBundle* resB U_LIFETIME_BOUND, UErrorCode* status) { UnicodeString result; int32_t len = 0; const char16_t *r = ConstChar16Ptr(ures_getString(resB, &len, status)); @@ -835,7 +837,9 @@ ures_getUnicodeString(const UResourceBundle *resB, UErrorCode* status) { * @stable ICU 2.0 */ inline UnicodeString -ures_getNextUnicodeString(UResourceBundle *resB, const char ** key, UErrorCode* status) { +ures_getNextUnicodeString(UResourceBundle* resB U_LIFETIME_BOUND, + const char** key, + UErrorCode* status) { UnicodeString result; int32_t len = 0; const char16_t* r = ConstChar16Ptr(ures_getNextString(resB, &len, key, status)); @@ -857,7 +861,9 @@ ures_getNextUnicodeString(UResourceBundle *resB, const char ** key, UErrorCode* * @stable ICU 2.0 */ inline UnicodeString -ures_getUnicodeStringByIndex(const UResourceBundle *resB, int32_t indexS, UErrorCode* status) { +ures_getUnicodeStringByIndex(const UResourceBundle* resB U_LIFETIME_BOUND, + int32_t indexS, + UErrorCode* status) { UnicodeString result; int32_t len = 0; const char16_t* r = ConstChar16Ptr(ures_getStringByIndex(resB, indexS, &len, status)); @@ -880,7 +886,9 @@ ures_getUnicodeStringByIndex(const UResourceBundle *resB, int32_t indexS, UError * @stable ICU 2.0 */ inline UnicodeString -ures_getUnicodeStringByKey(const UResourceBundle *resB, const char* key, UErrorCode* status) { +ures_getUnicodeStringByKey(const UResourceBundle* resB U_LIFETIME_BOUND, + const char* key, + UErrorCode* status) { UnicodeString result; int32_t len = 0; const char16_t* r = ConstChar16Ptr(ures_getStringByKey(resB, key, &len, status)); diff --git a/deps/icu-small/source/common/unicode/uscript.h b/deps/icu-small/source/common/unicode/uscript.h index e5101ed0134e..dda5266f322b 100644 --- a/deps/icu-small/source/common/unicode/uscript.h +++ b/deps/icu-small/source/common/unicode/uscript.h @@ -529,6 +529,11 @@ typedef enum UScriptCode { /** @stable ICU 78 */ USCRIPT_TRADITIONAL_HAN_WITH_LATIN = 212, /* Hntl */ + /** @stable ICU 79 */ + USCRIPT_PROTO_CUNEIFORM = 213, /* Pcun */ + /** @stable ICU 79 */ + USCRIPT_SEAL = 214, /* Seal */ + #ifndef U_HIDE_DEPRECATED_API /** * One more than the highest normal UScriptCode value. @@ -536,7 +541,7 @@ typedef enum UScriptCode { * * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ - USCRIPT_CODE_LIMIT = 213 + USCRIPT_CODE_LIMIT = 215 #endif // U_HIDE_DEPRECATED_API } UScriptCode; diff --git a/deps/icu-small/source/common/unicode/uset.h b/deps/icu-small/source/common/unicode/uset.h index 4817f7115a70..c44d5ada5625 100644 --- a/deps/icu-small/source/common/unicode/uset.h +++ b/deps/icu-small/source/common/unicode/uset.h @@ -398,7 +398,6 @@ uset_isFrozen(const USet *set); * uset_contains() and uset_span(). * A frozen set will not be modified. (It remains frozen.) * @param set the set - * @return the same set, now frozen * @see uset_isFrozen * @see uset_cloneAsThawed * @stable ICU 3.8 @@ -1011,7 +1010,7 @@ uset_getStringCount(const USet *set); * @see uset_getStringCount */ U_CAPI const UChar* U_EXPORT2 -uset_getString(const USet *set, int32_t index, int32_t *pLength); +uset_getString(const USet* set U_LIFETIME_BOUND, int32_t index, int32_t* pLength); /** * Returns the number of items in this set. An item is either a range @@ -1358,7 +1357,7 @@ class USetCodePointIterator { * Pre-increment. * @stable ICU 76 */ - USetCodePointIterator &operator++() { + USetCodePointIterator& operator++() U_LIFETIME_BOUND { if (c < end) { ++c; } else if (rangeIndex < rangeCount) { @@ -1388,7 +1387,9 @@ class USetCodePointIterator { private: friend class USetCodePoints; - USetCodePointIterator(const USet *pUset, int32_t nRangeIndex, int32_t nRangeCount) + USetCodePointIterator(const USet* pUset U_LIFETIME_BOUND, + int32_t nRangeIndex, + int32_t nRangeCount) : uset(pUset), rangeIndex(nRangeIndex), rangeCount(nRangeCount), c(U_SENTINEL), end(U_SENTINEL) { // Fetch the first range. @@ -1425,7 +1426,8 @@ class USetCodePoints { * Constructs a C++ "range" object over the code points of the USet. * @stable ICU 76 */ - USetCodePoints(const USet *pUset) : uset(pUset), rangeCount(uset_getRangeCount(pUset)) {} + USetCodePoints(const USet* pUset U_LIFETIME_BOUND) + : uset(pUset), rangeCount(uset_getRangeCount(pUset)) {} /** @stable ICU 76 */ USetCodePoints(const USetCodePoints &other) = default; @@ -1470,7 +1472,7 @@ struct CodePointRange { * Pre-increment. * @stable ICU 76 */ - iterator &operator++() { + iterator& operator++() U_LIFETIME_BOUND { ++c; return *this; } @@ -1551,7 +1553,7 @@ class USetRangeIterator { * Pre-increment. * @stable ICU 76 */ - USetRangeIterator &operator++() { + USetRangeIterator& operator++() U_LIFETIME_BOUND { ++rangeIndex; return *this; } @@ -1569,7 +1571,7 @@ class USetRangeIterator { private: friend class USetRanges; - USetRangeIterator(const USet *pUset, int32_t nRangeIndex, int32_t nRangeCount) + USetRangeIterator(const USet* pUset U_LIFETIME_BOUND, int32_t nRangeIndex, int32_t nRangeCount) : uset(pUset), rangeIndex(nRangeIndex), rangeCount(nRangeCount) {} const USet *uset; @@ -1606,7 +1608,8 @@ class USetRanges { * Constructs a C++ "range" object over the code point ranges of the USet. * @stable ICU 76 */ - USetRanges(const USet *pUset) : uset(pUset), rangeCount(uset_getRangeCount(pUset)) {} + USetRanges(const USet* pUset U_LIFETIME_BOUND) + : uset(pUset), rangeCount(uset_getRangeCount(pUset)) {} /** @stable ICU 76 */ USetRanges(const USetRanges &other) = default; @@ -1662,7 +1665,7 @@ class USetStringIterator { * Pre-increment. * @stable ICU 76 */ - USetStringIterator &operator++() { + USetStringIterator& operator++() U_LIFETIME_BOUND { ++index; return *this; } @@ -1680,7 +1683,7 @@ class USetStringIterator { private: friend class USetStrings; - USetStringIterator(const USet *pUset, int32_t nIndex, int32_t nCount) + USetStringIterator(const USet* pUset U_LIFETIME_BOUND, int32_t nIndex, int32_t nCount) : uset(pUset), index(nIndex), count(nCount) {} const USet *uset; @@ -1716,7 +1719,8 @@ class USetStrings { * Constructs a C++ "range" object over the strings of the USet. * @stable ICU 76 */ - USetStrings(const USet *pUset) : uset(pUset), count(uset_getStringCount(pUset)) {} + USetStrings(const USet* pUset U_LIFETIME_BOUND) + : uset(pUset), count(uset_getStringCount(pUset)) {} /** @stable ICU 76 */ USetStrings(const USetStrings &other) = default; @@ -1736,17 +1740,16 @@ class USetStrings { int32_t count; }; -#ifndef U_HIDE_DRAFT_API /** * Iterator returned by USetElements. - * @draft ICU 77 + * @stable ICU 77 */ class USetElementIterator { public: - /** @draft ICU 77 */ + /** @stable ICU 77 */ USetElementIterator(const USetElementIterator &other) = default; - /** @draft ICU 77 */ + /** @stable ICU 77 */ bool operator==(const USetElementIterator &other) const { // No need to compare rangeCount & end given private constructor // and assuming we don't compare iterators across the set being modified. @@ -1755,10 +1758,10 @@ class USetElementIterator { return uset == other.uset && c == other.c && index == other.index; } - /** @draft ICU 77 */ + /** @stable ICU 77 */ bool operator!=(const USetElementIterator &other) const { return !operator==(other); } - /** @draft ICU 77 */ + /** @stable ICU 77 */ std::u16string operator*() const { if (c >= 0) { return c <= 0xffff ? @@ -1776,9 +1779,9 @@ class USetElementIterator { /** * Pre-increment. - * @draft ICU 77 + * @stable ICU 77 */ - USetElementIterator &operator++() { + USetElementIterator& operator++() U_LIFETIME_BOUND { if (c < end) { ++c; } else if (index < rangeCount) { @@ -1801,7 +1804,7 @@ class USetElementIterator { /** * Post-increment. - * @draft ICU 77 + * @stable ICU 77 */ USetElementIterator operator++(int) { USetElementIterator result(*this); @@ -1812,7 +1815,10 @@ class USetElementIterator { private: friend class USetElements; - USetElementIterator(const USet *pUset, int32_t nIndex, int32_t nRangeCount, int32_t nTotalCount) + USetElementIterator(const USet* pUset U_LIFETIME_BOUND, + int32_t nIndex, + int32_t nRangeCount, + int32_t nTotalCount) : uset(pUset), index(nIndex), rangeCount(nRangeCount), totalCount(nTotalCount), c(U_SENTINEL), end(U_SENTINEL) { if (index < rangeCount) { @@ -1861,7 +1867,7 @@ class USetElementIterator { * C++ UnicodeSet has member functions for iteration, including begin() and end(). * * @return an all-elements iterator. - * @draft ICU 77 + * @stable ICU 77 * @see USetCodePoints * @see USetRanges * @see USetStrings @@ -1870,21 +1876,21 @@ class USetElements { public: /** * Constructs a C++ "range" object over all of the elements of the USet. - * @draft ICU 77 + * @stable ICU 77 */ - USetElements(const USet *pUset) + USetElements(const USet* pUset U_LIFETIME_BOUND) : uset(pUset), rangeCount(uset_getRangeCount(pUset)), stringCount(uset_getStringCount(pUset)) {} - /** @draft ICU 77 */ + /** @stable ICU 77 */ USetElements(const USetElements &other) = default; - /** @draft ICU 77 */ + /** @stable ICU 77 */ USetElementIterator begin() const { return USetElementIterator(uset, 0, rangeCount, rangeCount + stringCount); } - /** @draft ICU 77 */ + /** @stable ICU 77 */ USetElementIterator end() const { return USetElementIterator(uset, rangeCount + stringCount, rangeCount, rangeCount + stringCount); } @@ -1894,8 +1900,6 @@ class USetElements { int32_t rangeCount, stringCount; }; -#endif // U_HIDE_DRAFT_API - } // namespace U_HEADER_ONLY_NAMESPACE #endif // U_SHOW_CPLUSPLUS_API || U_SHOW_CPLUSPLUS_HEADER_API diff --git a/deps/icu-small/source/common/unicode/usetiter.h b/deps/icu-small/source/common/unicode/usetiter.h index 3168d3b0f6b8..90fe06a3e8a7 100644 --- a/deps/icu-small/source/common/unicode/usetiter.h +++ b/deps/icu-small/source/common/unicode/usetiter.h @@ -103,7 +103,7 @@ class U_COMMON_API UnicodeSetIterator final : public UObject { * @param set set to iterate over * @stable ICU 2.4 */ - UnicodeSetIterator(const UnicodeSet& set); + UnicodeSetIterator(const UnicodeSet& set U_LIFETIME_BOUND); /** * Create an iterator over nothing. next() and @@ -162,7 +162,7 @@ class U_COMMON_API UnicodeSetIterator final : public UObject { * * @stable ICU 2.4 */ - const UnicodeString& getString(); + const UnicodeString& getString() U_LIFETIME_BOUND; /** * Skips over the remaining code points/ranges, if any. @@ -173,7 +173,7 @@ class U_COMMON_API UnicodeSetIterator final : public UObject { * @stable ICU 70 * @see UnicodeSet#strings() */ - inline UnicodeSetIterator &skipToStrings() { + inline UnicodeSetIterator& skipToStrings() U_LIFETIME_BOUND { // Finish code point/range iteration. range = endRange; endElement = -1; diff --git a/deps/icu-small/source/common/unicode/ustring.h b/deps/icu-small/source/common/unicode/ustring.h index a3d08254d695..98883a4e725f 100644 --- a/deps/icu-small/source/common/unicode/ustring.h +++ b/deps/icu-small/source/common/unicode/ustring.h @@ -79,7 +79,6 @@ /** * \defgroup ustring_ustrlen String Length - * \ingroup ustring_strlen */ /*@{*/ /** @@ -141,8 +140,7 @@ u_strHasMoreChar32Than(const UChar *s, int32_t length, int32_t number); * @stable ICU 2.0 */ U_CAPI UChar* U_EXPORT2 -u_strcat(UChar *dst, - const UChar *src); +u_strcat(UChar* dst U_LIFETIME_BOUND, const UChar* src); /** * Concatenate two ustrings. @@ -159,9 +157,7 @@ u_strcat(UChar *dst, * @stable ICU 2.0 */ U_CAPI UChar* U_EXPORT2 -u_strncat(UChar *dst, - const UChar *src, - int32_t n); +u_strncat(UChar* dst U_LIFETIME_BOUND, const UChar* src, int32_t n); /** * Find the first occurrence of a substring in a string. @@ -183,8 +179,8 @@ u_strncat(UChar *dst, * @see u_strFindFirst * @see u_strFindLast */ -U_CAPI UChar * U_EXPORT2 -u_strstr(const UChar *s, const UChar *substring); +U_CAPI UChar* U_EXPORT2 +u_strstr(const UChar* s U_LIFETIME_BOUND, const UChar* substring); /** * Find the first occurrence of a substring in a string. @@ -207,8 +203,11 @@ u_strstr(const UChar *s, const UChar *substring); * @see u_strstr * @see u_strFindLast */ -U_CAPI UChar * U_EXPORT2 -u_strFindFirst(const UChar *s, int32_t length, const UChar *substring, int32_t subLength); +U_CAPI UChar* U_EXPORT2 +u_strFindFirst(const UChar* s U_LIFETIME_BOUND, + int32_t length, + const UChar* substring, + int32_t subLength); /** * Find the first occurrence of a BMP code point in a string. @@ -227,8 +226,8 @@ u_strFindFirst(const UChar *s, int32_t length, const UChar *substring, int32_t s * @see u_strstr * @see u_strFindFirst */ -U_CAPI UChar * U_EXPORT2 -u_strchr(const UChar *s, UChar c); +U_CAPI UChar* U_EXPORT2 +u_strchr(const UChar* s U_LIFETIME_BOUND, UChar c); /** * Find the first occurrence of a code point in a string. @@ -247,8 +246,8 @@ u_strchr(const UChar *s, UChar c); * @see u_strstr * @see u_strFindFirst */ -U_CAPI UChar * U_EXPORT2 -u_strchr32(const UChar *s, UChar32 c); +U_CAPI UChar* U_EXPORT2 +u_strchr32(const UChar* s U_LIFETIME_BOUND, UChar32 c); /** * Find the last occurrence of a substring in a string. @@ -270,8 +269,8 @@ u_strchr32(const UChar *s, UChar32 c); * @see u_strFindFirst * @see u_strFindLast */ -U_CAPI UChar * U_EXPORT2 -u_strrstr(const UChar *s, const UChar *substring); +U_CAPI UChar* U_EXPORT2 +u_strrstr(const UChar* s U_LIFETIME_BOUND, const UChar* substring); /** * Find the last occurrence of a substring in a string. @@ -294,8 +293,11 @@ u_strrstr(const UChar *s, const UChar *substring); * @see u_strstr * @see u_strFindLast */ -U_CAPI UChar * U_EXPORT2 -u_strFindLast(const UChar *s, int32_t length, const UChar *substring, int32_t subLength); +U_CAPI UChar* U_EXPORT2 +u_strFindLast(const UChar* s U_LIFETIME_BOUND, + int32_t length, + const UChar* substring, + int32_t subLength); /** * Find the last occurrence of a BMP code point in a string. @@ -314,8 +316,8 @@ u_strFindLast(const UChar *s, int32_t length, const UChar *substring, int32_t su * @see u_strrstr * @see u_strFindLast */ -U_CAPI UChar * U_EXPORT2 -u_strrchr(const UChar *s, UChar c); +U_CAPI UChar* U_EXPORT2 +u_strrchr(const UChar* s U_LIFETIME_BOUND, UChar c); /** * Find the last occurrence of a code point in a string. @@ -334,8 +336,8 @@ u_strrchr(const UChar *s, UChar c); * @see u_strrstr * @see u_strFindLast */ -U_CAPI UChar * U_EXPORT2 -u_strrchr32(const UChar *s, UChar32 c); +U_CAPI UChar* U_EXPORT2 +u_strrchr32(const UChar* s U_LIFETIME_BOUND, UChar32 c); /** * Locates the first occurrence in the string string of any of the characters @@ -349,8 +351,8 @@ u_strrchr32(const UChar *s, UChar32 c); * characters in matchSet, or NULL if no such character is found. * @stable ICU 2.0 */ -U_CAPI UChar * U_EXPORT2 -u_strpbrk(const UChar *string, const UChar *matchSet); +U_CAPI UChar* U_EXPORT2 +u_strpbrk(const UChar* string U_LIFETIME_BOUND, const UChar* matchSet); /** * Returns the number of consecutive characters in string, @@ -409,10 +411,8 @@ u_strspn(const UChar *string, const UChar *matchSet); * when there are no more tokens. * @stable ICU 2.0 */ -U_CAPI UChar * U_EXPORT2 -u_strtok_r(UChar *src, - const UChar *delim, - UChar **saveState); +U_CAPI UChar* U_EXPORT2 +u_strtok_r(UChar* src U_LIFETIME_BOUND, const UChar* delim, UChar** saveState); /** * Compare two Unicode strings for bitwise equality (code unit order). @@ -655,8 +655,7 @@ u_memcasecmp(const UChar *s1, const UChar *s2, int32_t length, uint32_t options) * @stable ICU 2.0 */ U_CAPI UChar* U_EXPORT2 -u_strcpy(UChar *dst, - const UChar *src); +u_strcpy(UChar* dst U_LIFETIME_BOUND, const UChar* src); /** * Copy a ustring. @@ -670,9 +669,7 @@ u_strcpy(UChar *dst, * @stable ICU 2.0 */ U_CAPI UChar* U_EXPORT2 -u_strncpy(UChar *dst, - const UChar *src, - int32_t n); +u_strncpy(UChar* dst U_LIFETIME_BOUND, const UChar* src, int32_t n); #if !UCONFIG_NO_CONVERSION @@ -686,8 +683,7 @@ u_strncpy(UChar *dst, * @return A pointer to dst. * @stable ICU 2.0 */ -U_CAPI UChar* U_EXPORT2 u_uastrcpy(UChar *dst, - const char *src ); +U_CAPI UChar* U_EXPORT2 u_uastrcpy(UChar* dst U_LIFETIME_BOUND, const char* src); /** * Copy a byte string encoded in the default codepage to a ustring. @@ -701,9 +697,7 @@ U_CAPI UChar* U_EXPORT2 u_uastrcpy(UChar *dst, * @return A pointer to dst. * @stable ICU 2.0 */ -U_CAPI UChar* U_EXPORT2 u_uastrncpy(UChar *dst, - const char *src, - int32_t n); +U_CAPI UChar* U_EXPORT2 u_uastrncpy(UChar* dst U_LIFETIME_BOUND, const char* src, int32_t n); /** * Copy ustring to a byte string encoded in the default codepage. @@ -715,8 +709,7 @@ U_CAPI UChar* U_EXPORT2 u_uastrncpy(UChar *dst, * @return A pointer to dst. * @stable ICU 2.0 */ -U_CAPI char* U_EXPORT2 u_austrcpy(char *dst, - const UChar *src ); +U_CAPI char* U_EXPORT2 u_austrcpy(char* dst U_LIFETIME_BOUND, const UChar* src); /** * Copy ustring to a byte string encoded in the default codepage. @@ -730,9 +723,7 @@ U_CAPI char* U_EXPORT2 u_austrcpy(char *dst, * @return A pointer to dst. * @stable ICU 2.0 */ -U_CAPI char* U_EXPORT2 u_austrncpy(char *dst, - const UChar *src, - int32_t n ); +U_CAPI char* U_EXPORT2 u_austrncpy(char* dst U_LIFETIME_BOUND, const UChar* src, int32_t n); #endif @@ -745,7 +736,7 @@ U_CAPI char* U_EXPORT2 u_austrncpy(char *dst, * @stable ICU 2.0 */ U_CAPI UChar* U_EXPORT2 -u_memcpy(UChar *dest, const UChar *src, int32_t count); +u_memcpy(UChar* dest U_LIFETIME_BOUND, const UChar* src, int32_t count); /** * Synonym for memmove(), but with UChars only. @@ -756,7 +747,7 @@ u_memcpy(UChar *dest, const UChar *src, int32_t count); * @stable ICU 2.0 */ U_CAPI UChar* U_EXPORT2 -u_memmove(UChar *dest, const UChar *src, int32_t count); +u_memmove(UChar* dest U_LIFETIME_BOUND, const UChar* src, int32_t count); /** * Initialize count characters of dest to c. @@ -768,7 +759,7 @@ u_memmove(UChar *dest, const UChar *src, int32_t count); * @stable ICU 2.0 */ U_CAPI UChar* U_EXPORT2 -u_memset(UChar *dest, UChar c, int32_t count); +u_memset(UChar* dest U_LIFETIME_BOUND, UChar c, int32_t count); /** * Compare the first count UChars of each buffer. @@ -818,7 +809,7 @@ u_memcmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t count); * @see u_strFindFirst */ U_CAPI UChar* U_EXPORT2 -u_memchr(const UChar *s, UChar c, int32_t count); +u_memchr(const UChar* s U_LIFETIME_BOUND, UChar c, int32_t count); /** * Find the first occurrence of a code point in a string. @@ -838,7 +829,7 @@ u_memchr(const UChar *s, UChar c, int32_t count); * @see u_strFindFirst */ U_CAPI UChar* U_EXPORT2 -u_memchr32(const UChar *s, UChar32 c, int32_t count); +u_memchr32(const UChar* s U_LIFETIME_BOUND, UChar32 c, int32_t count); /** * Find the last occurrence of a BMP code point in a string. @@ -858,7 +849,7 @@ u_memchr32(const UChar *s, UChar32 c, int32_t count); * @see u_strFindLast */ U_CAPI UChar* U_EXPORT2 -u_memrchr(const UChar *s, UChar c, int32_t count); +u_memrchr(const UChar* s U_LIFETIME_BOUND, UChar c, int32_t count); /** * Find the last occurrence of a code point in a string. @@ -878,7 +869,7 @@ u_memrchr(const UChar *s, UChar c, int32_t count); * @see u_strFindLast */ U_CAPI UChar* U_EXPORT2 -u_memrchr32(const UChar *s, UChar32 c, int32_t count); +u_memrchr32(const UChar* s U_LIFETIME_BOUND, UChar32 c, int32_t count); /** * Unicode String literals in C. @@ -1197,12 +1188,12 @@ u_strFoldCase(UChar *dest, int32_t destCapacity, * @stable ICU 2.0 */ U_CAPI wchar_t* U_EXPORT2 -u_strToWCS(wchar_t *dest, +u_strToWCS(wchar_t* dest U_LIFETIME_BOUND, int32_t destCapacity, - int32_t *pDestLength, - const UChar *src, + int32_t* pDestLength, + const UChar* src, int32_t srcLength, - UErrorCode *pErrorCode); + UErrorCode* pErrorCode); /** * Convert a wchar_t string to UTF-16. * If it is known at compile time that wchar_t strings are in UTF-16 or UTF-32, then @@ -1226,12 +1217,12 @@ u_strToWCS(wchar_t *dest, * @stable ICU 2.0 */ U_CAPI UChar* U_EXPORT2 -u_strFromWCS(UChar *dest, - int32_t destCapacity, - int32_t *pDestLength, - const wchar_t *src, +u_strFromWCS(UChar* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const wchar_t* src, int32_t srcLength, - UErrorCode *pErrorCode); + UErrorCode* pErrorCode); #endif /* defined(U_WCHAR_IS_UTF16) || defined(U_WCHAR_IS_UTF32) || !UCONFIG_NO_CONVERSION */ /** @@ -1256,13 +1247,13 @@ u_strFromWCS(UChar *dest, * @see u_strToUTF8WithSub * @see u_strFromUTF8 */ -U_CAPI char* U_EXPORT2 -u_strToUTF8(char *dest, +U_CAPI char* U_EXPORT2 +u_strToUTF8(char* dest U_LIFETIME_BOUND, int32_t destCapacity, - int32_t *pDestLength, - const UChar *src, + int32_t* pDestLength, + const UChar* src, int32_t srcLength, - UErrorCode *pErrorCode); + UErrorCode* pErrorCode); /** * Convert a UTF-8 string to UTF-16. @@ -1287,12 +1278,12 @@ u_strToUTF8(char *dest, * @see u_strFromUTF8Lenient */ U_CAPI UChar* U_EXPORT2 -u_strFromUTF8(UChar *dest, +u_strFromUTF8(UChar* dest U_LIFETIME_BOUND, int32_t destCapacity, - int32_t *pDestLength, - const char *src, + int32_t* pDestLength, + const char* src, int32_t srcLength, - UErrorCode *pErrorCode); + UErrorCode* pErrorCode); /** * Convert a UTF-16 string to UTF-8. @@ -1330,13 +1321,14 @@ u_strFromUTF8(UChar *dest, * @stable ICU 3.6 */ U_CAPI char* U_EXPORT2 -u_strToUTF8WithSub(char *dest, - int32_t destCapacity, - int32_t *pDestLength, - const UChar *src, - int32_t srcLength, - UChar32 subchar, int32_t *pNumSubstitutions, - UErrorCode *pErrorCode); +u_strToUTF8WithSub(char* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const UChar* src, + int32_t srcLength, + UChar32 subchar, + int32_t* pNumSubstitutions, + UErrorCode* pErrorCode); /** * Convert a UTF-8 string to UTF-16. @@ -1375,13 +1367,14 @@ u_strToUTF8WithSub(char *dest, * @stable ICU 3.6 */ U_CAPI UChar* U_EXPORT2 -u_strFromUTF8WithSub(UChar *dest, - int32_t destCapacity, - int32_t *pDestLength, - const char *src, - int32_t srcLength, - UChar32 subchar, int32_t *pNumSubstitutions, - UErrorCode *pErrorCode); +u_strFromUTF8WithSub(UChar* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const char* src, + int32_t srcLength, + UChar32 subchar, + int32_t* pNumSubstitutions, + UErrorCode* pErrorCode); /** * Convert a UTF-8 string to UTF-16. @@ -1434,13 +1427,13 @@ u_strFromUTF8WithSub(UChar *dest, * @see u_strToUTF8WithSub * @stable ICU 3.6 */ -U_CAPI UChar * U_EXPORT2 -u_strFromUTF8Lenient(UChar *dest, +U_CAPI UChar* U_EXPORT2 +u_strFromUTF8Lenient(UChar* dest U_LIFETIME_BOUND, int32_t destCapacity, - int32_t *pDestLength, - const char *src, + int32_t* pDestLength, + const char* src, int32_t srcLength, - UErrorCode *pErrorCode); + UErrorCode* pErrorCode); /** * Convert a UTF-16 string to UTF-32. @@ -1464,13 +1457,13 @@ u_strFromUTF8Lenient(UChar *dest, * @see u_strFromUTF32 * @stable ICU 2.0 */ -U_CAPI UChar32* U_EXPORT2 -u_strToUTF32(UChar32 *dest, - int32_t destCapacity, - int32_t *pDestLength, - const UChar *src, - int32_t srcLength, - UErrorCode *pErrorCode); +U_CAPI UChar32* U_EXPORT2 +u_strToUTF32(UChar32* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const UChar* src, + int32_t srcLength, + UErrorCode* pErrorCode); /** * Convert a UTF-32 string to UTF-16. @@ -1494,13 +1487,13 @@ u_strToUTF32(UChar32 *dest, * @see u_strToUTF32 * @stable ICU 2.0 */ -U_CAPI UChar* U_EXPORT2 -u_strFromUTF32(UChar *dest, - int32_t destCapacity, - int32_t *pDestLength, - const UChar32 *src, +U_CAPI UChar* U_EXPORT2 +u_strFromUTF32(UChar* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const UChar32* src, int32_t srcLength, - UErrorCode *pErrorCode); + UErrorCode* pErrorCode); /** * Convert a UTF-16 string to UTF-32. @@ -1538,13 +1531,14 @@ u_strFromUTF32(UChar *dest, * @stable ICU 4.2 */ U_CAPI UChar32* U_EXPORT2 -u_strToUTF32WithSub(UChar32 *dest, - int32_t destCapacity, - int32_t *pDestLength, - const UChar *src, - int32_t srcLength, - UChar32 subchar, int32_t *pNumSubstitutions, - UErrorCode *pErrorCode); +u_strToUTF32WithSub(UChar32* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const UChar* src, + int32_t srcLength, + UChar32 subchar, + int32_t* pNumSubstitutions, + UErrorCode* pErrorCode); /** * Convert a UTF-32 string to UTF-16. @@ -1582,13 +1576,14 @@ u_strToUTF32WithSub(UChar32 *dest, * @stable ICU 4.2 */ U_CAPI UChar* U_EXPORT2 -u_strFromUTF32WithSub(UChar *dest, - int32_t destCapacity, - int32_t *pDestLength, - const UChar32 *src, - int32_t srcLength, - UChar32 subchar, int32_t *pNumSubstitutions, - UErrorCode *pErrorCode); +u_strFromUTF32WithSub(UChar* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const UChar32* src, + int32_t srcLength, + UChar32 subchar, + int32_t* pNumSubstitutions, + UErrorCode* pErrorCode); /** * Convert a 16-bit Unicode string to Java Modified UTF-8. @@ -1622,14 +1617,13 @@ u_strFromUTF32WithSub(UChar *dest, * @see u_strToUTF8WithSub * @see u_strFromJavaModifiedUTF8WithSub */ -U_CAPI char* U_EXPORT2 -u_strToJavaModifiedUTF8( - char *dest, - int32_t destCapacity, - int32_t *pDestLength, - const UChar *src, - int32_t srcLength, - UErrorCode *pErrorCode); +U_CAPI char* U_EXPORT2 +u_strToJavaModifiedUTF8(char* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const UChar* src, + int32_t srcLength, + UErrorCode* pErrorCode); /** * Convert a Java Modified UTF-8 string to a 16-bit Unicode string. @@ -1673,13 +1667,13 @@ u_strToJavaModifiedUTF8( * @stable ICU 4.4 */ U_CAPI UChar* U_EXPORT2 -u_strFromJavaModifiedUTF8WithSub( - UChar *dest, - int32_t destCapacity, - int32_t *pDestLength, - const char *src, - int32_t srcLength, - UChar32 subchar, int32_t *pNumSubstitutions, - UErrorCode *pErrorCode); +u_strFromJavaModifiedUTF8WithSub(UChar* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const char* src, + int32_t srcLength, + UChar32 subchar, + int32_t* pNumSubstitutions, + UErrorCode* pErrorCode); #endif diff --git a/deps/icu-small/source/common/unicode/utext.h b/deps/icu-small/source/common/unicode/utext.h index 423b281631db..0b104a30ccb4 100644 --- a/deps/icu-small/source/common/unicode/utext.h +++ b/deps/icu-small/source/common/unicode/utext.h @@ -180,8 +180,8 @@ typedef struct UText UText; /**< C typedef for struct UText. @stable ICU 3.6 */ * * @stable ICU 3.4 */ -U_CAPI UText * U_EXPORT2 -utext_close(UText *ut); +U_CAPI UText* U_EXPORT2 +utext_close(UText* ut U_LIFETIME_BOUND); /** * Open a read-only UText implementation for UTF-8 strings. @@ -204,9 +204,11 @@ utext_close(UText *ut); * will always be used and returned. * @stable ICU 3.4 */ -U_CAPI UText * U_EXPORT2 -utext_openUTF8(UText *ut, const char *s, int64_t length, UErrorCode *status); - +U_CAPI UText* U_EXPORT2 +utext_openUTF8(UText* ut U_LIFETIME_BOUND, + const char* s U_LIFETIME_BOUND, + int64_t length, + UErrorCode* status); /** * Open a read-only UText for UChar * string. @@ -222,9 +224,11 @@ utext_openUTF8(UText *ut, const char *s, int64_t length, UErrorCode *status); * will always be used and returned. * @stable ICU 3.4 */ -U_CAPI UText * U_EXPORT2 -utext_openUChars(UText *ut, const UChar *s, int64_t length, UErrorCode *status); - +U_CAPI UText* U_EXPORT2 +utext_openUChars(UText* ut U_LIFETIME_BOUND, + const UChar* s U_LIFETIME_BOUND, + int64_t length, + UErrorCode* status); #if U_SHOW_CPLUSPLUS_API /** @@ -239,9 +243,10 @@ utext_openUChars(UText *ut, const UChar *s, int64_t length, UErrorCode *status); * will always be used and returned. * @stable ICU 3.4 */ -U_CAPI UText * U_EXPORT2 -utext_openUnicodeString(UText *ut, icu::UnicodeString *s, UErrorCode *status); - +U_CAPI UText* U_EXPORT2 +utext_openUnicodeString(UText* ut U_LIFETIME_BOUND, + icu::UnicodeString* s U_LIFETIME_BOUND, + UErrorCode* status); /** * Open a UText for a const UnicodeString. The resulting UText will not be writable. @@ -255,8 +260,10 @@ utext_openUnicodeString(UText *ut, icu::UnicodeString *s, UErrorCode *status); * will always be used and returned. * @stable ICU 3.4 */ -U_CAPI UText * U_EXPORT2 -utext_openConstUnicodeString(UText *ut, const icu::UnicodeString *s, UErrorCode *status); +U_CAPI UText* U_EXPORT2 +utext_openConstUnicodeString(UText* ut U_LIFETIME_BOUND, + const icu::UnicodeString* s U_LIFETIME_BOUND, + UErrorCode* status); /** @@ -271,8 +278,10 @@ utext_openConstUnicodeString(UText *ut, const icu::UnicodeString *s, UErrorCode * @see Replaceable * @stable ICU 3.4 */ -U_CAPI UText * U_EXPORT2 -utext_openReplaceable(UText *ut, icu::Replaceable *rep, UErrorCode *status); +U_CAPI UText* U_EXPORT2 +utext_openReplaceable(UText* ut U_LIFETIME_BOUND, + icu::Replaceable* rep U_LIFETIME_BOUND, + UErrorCode* status); /** * Open a UText implementation over an ICU CharacterIterator. @@ -286,8 +295,10 @@ utext_openReplaceable(UText *ut, icu::Replaceable *rep, UErrorCode *status); * @see Replaceable * @stable ICU 3.4 */ -U_CAPI UText * U_EXPORT2 -utext_openCharacterIterator(UText *ut, icu::CharacterIterator *ci, UErrorCode *status); +U_CAPI UText* U_EXPORT2 +utext_openCharacterIterator(UText* ut U_LIFETIME_BOUND, + icu::CharacterIterator* ci U_LIFETIME_BOUND, + UErrorCode* status); #endif @@ -349,9 +360,12 @@ utext_openCharacterIterator(UText *ut, icu::CharacterIterator *ci, UErrorCode *s * @return The newly created clone, or NULL if the clone operation failed. * @stable ICU 3.4 */ -U_CAPI UText * U_EXPORT2 -utext_clone(UText *dest, const UText *src, UBool deep, UBool readOnly, UErrorCode *status); - +U_CAPI UText* U_EXPORT2 +utext_clone(UText* dest U_LIFETIME_BOUND, + const UText* src, + UBool deep, + UBool readOnly, + UErrorCode* status); /** * Compare two UText objects for equality. @@ -1535,8 +1549,8 @@ struct UText { * @return pointer to the UText, allocated if necessary, with extra space set up if requested. * @stable ICU 3.4 */ -U_CAPI UText * U_EXPORT2 -utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status); +U_CAPI UText* U_EXPORT2 +utext_setup(UText* ut U_LIFETIME_BOUND, int32_t extraSpace, UErrorCode* status); // do not use #ifndef U_HIDE_INTERNAL_API around the following! /** diff --git a/deps/icu-small/source/common/unicode/utfiterator.h b/deps/icu-small/source/common/unicode/utfiterator.h index 6e79a4403057..2f5e7f847862 100644 --- a/deps/icu-small/source/common/unicode/utfiterator.h +++ b/deps/icu-small/source/common/unicode/utfiterator.h @@ -12,6 +12,9 @@ #if U_SHOW_CPLUSPLUS_API || U_SHOW_CPLUSPLUS_HEADER_API || !defined(UTYPES_H) #include +#if __has_include() +#include +#endif #if defined(__cpp_lib_ranges) #include #endif @@ -26,6 +29,9 @@ * \file * \brief C++ header-only API: C++ iterators over Unicode strings (=UTF-8/16/32 if well-formed). * + * See the User Guide chapter about + * C++ Code Point Iterators. + * * Sample code: * \code * #include @@ -268,7 +274,7 @@ class CodePointsIterator { /** @internal */ inline CP32 operator*() const { return c_; } /** @internal */ - inline CodePointsIterator &operator++() { // pre-increment + inline CodePointsIterator& operator++() U_LIFETIME_BOUND { // pre-increment ++c_; if (skipSurrogates && c_ == 0xd800) { c_ = 0xe000; @@ -1108,8 +1114,8 @@ class UTFIterator { class Proxy { public: explicit Proxy(CodeUnits &units) : units_(units) {} - CodeUnits &operator*() { return units_; } - CodeUnits *operator->() { return &units_; } + CodeUnits& operator*() U_LIFETIME_BOUND { return units_; } + CodeUnits* operator->() U_LIFETIME_BOUND { return &units_; } private: CodeUnits units_; }; @@ -1192,7 +1198,7 @@ class UTFIterator { * @draft ICU 78 */ U_FORCE_INLINE bool operator==(const UTFIterator &other) const { - return getLogicalPosition() == other.getLogicalPosition(); + return base() == other.base(); } /** * @param other Another iterator @@ -1214,7 +1220,7 @@ class UTFIterator { !std::is_same_v && !std::is_same_v, bool> operator==(const UTFIterator &iter, const Sentinel &s) { - return iter.getLogicalPosition() == s; + return iter.base() == s; } #if U_CPLUSPLUS_VERSION < 20 @@ -1233,7 +1239,7 @@ class UTFIterator { !std::is_same_v && !std::is_same_v, bool> operator==(const Sentinel &s, const UTFIterator &iter) { - return iter.getLogicalPosition() == s; + return iter.base() == s; } /** * @param iter A UTFIterator @@ -1259,6 +1265,18 @@ class UTFIterator { operator!=(const Sentinel &s, const UTFIterator &iter) { return !(iter == s); } #endif // C++17 + /** + * Returns the current position as a code unit iterator. + * Similar to iter->begin() but also works at the exclusive end(). + * + * @return current position as a code unit iterator + * @draft ICU 79 + */ + U_FORCE_INLINE UnitIter base() const { + // Return the logical position. + return state_ <= 0 ? p_ : units_.begin(); + } + /** * Decodes the code unit sequence at the current position. * @@ -1297,7 +1315,7 @@ class UTFIterator { * @return this iterator * @draft ICU 78 */ - U_FORCE_INLINE UTFIterator &operator++() { // pre-increment + U_FORCE_INLINE UTFIterator& operator++() U_LIFETIME_BOUND { // pre-increment if (state_ > 0) { // operator*() called readAndInc() so p_ is already ahead. state_ = 0; @@ -1348,10 +1366,10 @@ class UTFIterator { * @return this iterator * @draft ICU 78 */ - template + template U_FORCE_INLINE - std::enable_if_t, UTFIterator &> - operator--() { // pre-decrement + std::enable_if_t, UTFIterator&> + operator--() U_LIFETIME_BOUND { // pre-decrement if (state_ > 0) { // operator*() called readAndInc() so p_ is ahead of the logical position. p_ = units_.begin(); @@ -1380,10 +1398,6 @@ class UTFIterator { private: friend class std::reverse_iterator>; - U_FORCE_INLINE UnitIter getLogicalPosition() const { - return state_ <= 0 ? p_ : units_.begin(); - } - // operator*() etc. are logically const. mutable UnitIter p_; // In a validating iterator, we need start_ & limit_ so that when we read a code point @@ -1416,8 +1430,8 @@ class UTFIterator< class Proxy { public: explicit Proxy(CodeUnits &units) : units_(units) {} - CodeUnits &operator*() { return units_; } - CodeUnits *operator->() { return &units_; } + CodeUnits& operator*() U_LIFETIME_BOUND { return units_; } + CodeUnits* operator->() U_LIFETIME_BOUND { return &units_; } private: CodeUnits units_; }; @@ -1494,7 +1508,7 @@ class UTFIterator< return Proxy(units_); } - U_FORCE_INLINE UTFIterator &operator++() { // pre-increment + U_FORCE_INLINE UTFIterator& operator++() U_LIFETIME_BOUND { // pre-increment if (ahead_) { // operator*() called readAndInc() so p_ is already ahead. ahead_ = false; @@ -1548,8 +1562,8 @@ class std::reverse_iterator() { return &units_; } + CodeUnits_& operator*() U_LIFETIME_BOUND { return units_; } + CodeUnits_* operator->() U_LIFETIME_BOUND { return &units_; } private: CodeUnits_ units_; }; @@ -1562,7 +1576,7 @@ class std::reverse_iterator iter) : - p_(iter.getLogicalPosition()), start_(iter.start_), limit_(iter.limit_), + p_(iter.base()), start_(iter.start_), limit_(iter.limit_), units_(0, 0, false, p_, p_) {} U_FORCE_INLINE reverse_iterator() : p_{}, start_{}, limit_{}, units_(0, 0, false, p_, p_) {} @@ -1577,6 +1591,11 @@ class std::reverse_iterator base() const { + return U_HEADER_ONLY_NAMESPACE::UTFIterator( + start_, getLogicalPosition(), limit_); + } + U_FORCE_INLINE CodeUnits_ operator*() const { if (state_ == 0) { units_ = Impl::decAndRead(start_, p_); @@ -1593,7 +1612,7 @@ class std::reverse_iterator +#if defined(__cpp_lib_ranges) + requires std::ranges::range +#endif class UTFStringCodePoints { static_assert(sizeof(CP32) == 4, "CP32 must be a 32-bit type to hold a code point"); public: @@ -1807,7 +1829,7 @@ class UTFStringCodePoints { * @draft ICU 78 */ template>, typename = void> - explicit UTFStringCodePoints(Range unitRange) : unitRange(unitRange) {} + explicit UTFStringCodePoints(Range unitRange U_LIFETIME_BOUND) : unitRange(unitRange) {} /** Copy constructor. @draft ICU 78 */ UTFStringCodePoints(const UTFStringCodePoints &other) = default; @@ -1885,6 +1907,28 @@ class UTFStringCodePoints { return std::make_reverse_iterator(begin()); } + /** + * Returns the CodeUnits for the first character/code point. + * Requires that the range is not empty. + * + * @return the CodeUnits for the first character/code point. + * @draft ICU 79 + */ + auto front() const { + return *begin(); + } + + /** + * Returns the CodeUnits for the last character/code point. + * Requires that the range is not empty. + * + * @return the CodeUnits for the last character/code point. + * @draft ICU 79 + */ + auto back() const { + return *(--end()); + } + private: Range unitRange; }; @@ -1966,8 +2010,8 @@ class UnsafeUTFIterator { class Proxy { public: explicit Proxy(UnsafeCodeUnits &units) : units_(units) {} - UnsafeCodeUnits &operator*() { return units_; } - UnsafeCodeUnits *operator->() { return &units_; } + UnsafeCodeUnits& operator*() U_LIFETIME_BOUND { return units_; } + UnsafeCodeUnits* operator->() U_LIFETIME_BOUND { return &units_; } private: UnsafeCodeUnits units_; }; @@ -2020,7 +2064,7 @@ class UnsafeUTFIterator { * @draft ICU 78 */ U_FORCE_INLINE bool operator==(const UnsafeUTFIterator &other) const { - return getLogicalPosition() == other.getLogicalPosition(); + return base() == other.base(); } /** * @param other Another iterator @@ -2040,7 +2084,7 @@ class UnsafeUTFIterator { !std::is_same_v && !std::is_same_v, bool> operator==(const UnsafeUTFIterator &iter, const Sentinel &s) { - return iter.getLogicalPosition() == s; + return iter.base() == s; } #if U_CPLUSPLUS_VERSION < 20 @@ -2055,7 +2099,7 @@ class UnsafeUTFIterator { !std::is_same_v && !std::is_same_v, bool> operator==(const Sentinel &s, const UnsafeUTFIterator &iter) { - return iter.getLogicalPosition() == s; + return iter.base() == s; } /** * @param iter An UnsafeUTFIterator @@ -2081,6 +2125,18 @@ class UnsafeUTFIterator { operator!=(const Sentinel &s, const UnsafeUTFIterator &iter) { return !(iter == s); } #endif // C++17 + /** + * Returns the current position as a code unit iterator. + * Similar to iter->begin() but also works at the exclusive end(). + * + * @return current position as a code unit iterator + * @draft ICU 79 + */ + U_FORCE_INLINE UnitIter base() const { + // Return the logical position. + return state_ <= 0 ? p_ : units_.begin(); + } + /** * Decodes the code unit sequence at the current position. * @@ -2119,7 +2175,7 @@ class UnsafeUTFIterator { * @return this iterator * @draft ICU 78 */ - U_FORCE_INLINE UnsafeUTFIterator &operator++() { // pre-increment + U_FORCE_INLINE UnsafeUTFIterator& operator++() U_LIFETIME_BOUND { // pre-increment if (state_ > 0) { // operator*() called readAndInc() so p_ is already ahead. state_ = 0; @@ -2170,10 +2226,10 @@ class UnsafeUTFIterator { * @return this iterator * @draft ICU 78 */ - template + template U_FORCE_INLINE - std::enable_if_t, UnsafeUTFIterator &> - operator--() { // pre-decrement + std::enable_if_t, UnsafeUTFIterator&> + operator--() U_LIFETIME_BOUND { // pre-decrement if (state_ > 0) { // operator*() called readAndInc() so p_ is ahead of the logical position. p_ = units_.begin(); @@ -2202,10 +2258,6 @@ class UnsafeUTFIterator { private: friend class std::reverse_iterator>; - U_FORCE_INLINE UnitIter getLogicalPosition() const { - return state_ <= 0 ? p_ : units_.begin(); - } - // operator*() etc. are logically const. mutable UnitIter p_; // Keep state so that we call readAndInc() only once for both operator*() and ++ @@ -2234,8 +2286,8 @@ class UnsafeUTFIterator< class Proxy { public: explicit Proxy(UnsafeCodeUnits &units) : units_(units) {} - UnsafeCodeUnits &operator*() { return units_; } - UnsafeCodeUnits *operator->() { return &units_; } + UnsafeCodeUnits& operator*() U_LIFETIME_BOUND { return units_; } + UnsafeCodeUnits* operator->() U_LIFETIME_BOUND { return &units_; } private: UnsafeCodeUnits units_; }; @@ -2308,7 +2360,7 @@ class UnsafeUTFIterator< return Proxy(units_); } - U_FORCE_INLINE UnsafeUTFIterator &operator++() { // pre-increment + U_FORCE_INLINE UnsafeUTFIterator& operator++() U_LIFETIME_BOUND { // pre-increment if (ahead_) { // operator*() called readAndInc() so p_ is already ahead. ahead_ = false; @@ -2359,8 +2411,8 @@ class std::reverse_iterator() { return &units_; } + UnsafeCodeUnits_& operator*() U_LIFETIME_BOUND { return units_; } + UnsafeCodeUnits_* operator->() U_LIFETIME_BOUND { return &units_; } private: UnsafeCodeUnits_ units_; }; @@ -2373,7 +2425,7 @@ class std::reverse_iterator iter) : - p_(iter.getLogicalPosition()), units_(0, 0, p_, p_) {} + p_(iter.base()), units_(0, 0, p_, p_) {} U_FORCE_INLINE reverse_iterator() : p_{}, units_(0, 0, p_, p_) {} U_FORCE_INLINE reverse_iterator(reverse_iterator &&src) noexcept = default; @@ -2387,6 +2439,11 @@ class std::reverse_iterator base() const { + return U_HEADER_ONLY_NAMESPACE::UnsafeUTFIterator( + getLogicalPosition()); + } + U_FORCE_INLINE UnsafeCodeUnits_ operator*() const { if (state_ == 0) { units_ = Impl::decAndRead(p_); @@ -2403,7 +2460,7 @@ class std::reverse_iterator +#if defined(__cpp_lib_ranges) + requires std::ranges::range +#endif class UnsafeUTFStringCodePoints { static_assert(sizeof(CP32) == 4, "CP32 must be a 32-bit type to hold a code point"); public: @@ -2548,7 +2608,7 @@ class UnsafeUTFStringCodePoints { * @draft ICU 78 */ template>, typename = void> - explicit UnsafeUTFStringCodePoints(Range unitRange) : unitRange(unitRange) {} + explicit UnsafeUTFStringCodePoints(Range unitRange U_LIFETIME_BOUND) : unitRange(unitRange) {} /** Copy constructor. @draft ICU 78 */ UnsafeUTFStringCodePoints(const UnsafeUTFStringCodePoints &other) = default; @@ -2620,6 +2680,28 @@ class UnsafeUTFStringCodePoints { return std::make_reverse_iterator(begin()); } + /** + * Returns the CodeUnits for the first character/code point. + * Requires that the range is not empty. + * + * @return the CodeUnits for the first character/code point. + * @draft ICU 79 + */ + auto front() const { + return *begin(); + } + + /** + * Returns the CodeUnits for the last character/code point. + * Requires that the range is not empty. + * + * @return the CodeUnits for the last character/code point. + * @draft ICU 79 + */ + auto back() const { + return *(--end()); + } + private: Range unitRange; }; diff --git a/deps/icu-small/source/common/unicode/utfstring.h b/deps/icu-small/source/common/unicode/utfstring.h index f596d56a6573..e6654be4eb6c 100644 --- a/deps/icu-small/source/common/unicode/utfstring.h +++ b/deps/icu-small/source/common/unicode/utfstring.h @@ -31,8 +31,8 @@ namespace prv { // This function, and the public wrappers, // want to be U_FORCE_INLINE but the gcc-debug-build-and-test CI check failed with // error: ‘always_inline’ function might not be inlinable [-Werror=attributes] -template -inline StringClass &appendCodePoint(StringClass &s, uint32_t c) { +template +inline StringClass& appendCodePoint(StringClass& s U_LIFETIME_BOUND, uint32_t c) { using Unit = typename StringClass::value_type; if constexpr (sizeof(Unit) == 1) { // UTF-8: Similar to U8_APPEND(). @@ -94,8 +94,8 @@ inline StringClass &appendCodePoint(StringClass &s, uint32_t c) { * @draft ICU 78 * @see U_IS_SCALAR_VALUE */ -template -inline StringClass &appendOrFFFD(StringClass &s, UChar32 c) { +template +inline StringClass& appendOrFFFD(StringClass& s U_LIFETIME_BOUND, UChar32 c) { return prv::appendCodePoint(s, c); } @@ -111,8 +111,8 @@ inline StringClass &appendOrFFFD(StringClass &s, UChar32 c) { * @draft ICU 78 * @see U_IS_SCALAR_VALUE */ -template -inline StringClass &appendUnsafe(StringClass &s, UChar32 c) { +template +inline StringClass& appendUnsafe(StringClass& s U_LIFETIME_BOUND, UChar32 c) { return prv::appendCodePoint(s, c); } diff --git a/deps/icu-small/source/common/unicode/utypes.h b/deps/icu-small/source/common/unicode/utypes.h index f53b7536f200..3a46a55009c6 100644 --- a/deps/icu-small/source/common/unicode/utypes.h +++ b/deps/icu-small/source/common/unicode/utypes.h @@ -827,6 +827,34 @@ typedef enum UErrorCode { # define U_FAILURE(x) ((x)>U_ZERO_ERROR) #endif +/* Distinguishing MessageFormat recoverable errors */ +#ifdef __cplusplus + /** + * Does the error code indicate a MessageFormat recoverable error? + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ + static + inline UBool U_MF_RECOVERABLE_ERROR(UErrorCode code) { + return (code == U_MF_OPERAND_MISMATCH_ERROR) + || (code == U_MF_FORMATTING_ERROR) + || (code == U_MF_BAD_OPTION); + } +#else + /** + * Does the error code indicate success? + * + * @internal ICU 79 technology preview + * @deprecated This API is for technology preview only. + */ +# define U_MF_RECOVERABLE_ERROR(x) ((code == U_MF_OPERAND_MISMATCH_ERROR) \ + || (code == U_MF_FORMATTING_ERROR) \ + || (code == U_MF_BAD_OPTION)) +#endif + + + /** * Return a string for a UErrorCode value. * The string will be the same as the name of the error code constant diff --git a/deps/icu-small/source/common/unicode/uvernum.h b/deps/icu-small/source/common/unicode/uvernum.h index 75acd4f0052a..fd3100dda1cd 100644 --- a/deps/icu-small/source/common/unicode/uvernum.h +++ b/deps/icu-small/source/common/unicode/uvernum.h @@ -53,13 +53,13 @@ * This value will change in the subsequent releases of ICU * @stable ICU 2.4 */ -#define U_ICU_VERSION_MAJOR_NUM 78 +#define U_ICU_VERSION_MAJOR_NUM 79 /** The current ICU minor version as an integer. * This value will change in the subsequent releases of ICU * @stable ICU 2.6 */ -#define U_ICU_VERSION_MINOR_NUM 3 +#define U_ICU_VERSION_MINOR_NUM 1 /** The current ICU patchlevel version as an integer. * This value will change in the subsequent releases of ICU @@ -79,7 +79,7 @@ * This value will change in the subsequent releases of ICU * @stable ICU 2.6 */ -#define U_ICU_VERSION_SUFFIX _78 +#define U_ICU_VERSION_SUFFIX _79 /** * \def U_DEF2_ICU_ENTRY_POINT_RENAME @@ -132,7 +132,7 @@ * This value will change in the subsequent releases of ICU * @stable ICU 2.4 */ -#define U_ICU_VERSION "78.3" +#define U_ICU_VERSION "79.1" /** * The current ICU library major version number as a string, for library name suffixes. @@ -145,13 +145,13 @@ * * @stable ICU 2.6 */ -#define U_ICU_VERSION_SHORT "78" +#define U_ICU_VERSION_SHORT "79" #ifndef U_HIDE_INTERNAL_API /** Data version in ICU4C. * @internal ICU 4.4 Internal Use Only **/ -#define U_ICU_DATA_VERSION "78.3" +#define U_ICU_DATA_VERSION "79.1" #endif /* U_HIDE_INTERNAL_API */ /*=========================================================================== diff --git a/deps/icu-small/source/common/unicode/uversion.h b/deps/icu-small/source/common/unicode/uversion.h index 450794ac1bae..58703cd7414d 100644 --- a/deps/icu-small/source/common/unicode/uversion.h +++ b/deps/icu-small/source/common/unicode/uversion.h @@ -149,7 +149,6 @@ typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH]; * @stable ICU 76 */ -#ifndef U_FORCE_HIDE_DRAFT_API /** * \def U_ICU_NAMESPACE_OR_INTERNAL * Namespace used for header-only APIs that used to be regular C++ APIs. @@ -157,9 +156,8 @@ typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH]; * Similar to U_HEADER_ONLY_NAMESPACE, but the public definition is the same as U_ICU_NAMESPACE. * "U_ICU_NAMESPACE" or "U_ICU_NAMESPACE::internal". * - * @draft ICU 77 + * @stable ICU 77 */ -#endif // U_FORCE_HIDE_DRAFT_API // The first test is the same as for defining U_EXPORT for Windows. #if defined(_MSC_VER) || (UPRV_HAS_DECLSPEC_ATTRIBUTE(__dllexport__) && \ diff --git a/deps/icu-small/source/common/unifilt.cpp b/deps/icu-small/source/common/unifilt.cpp index 4ab0d9b5f934..b30b1d596b06 100644 --- a/deps/icu-small/source/common/unifilt.cpp +++ b/deps/icu-small/source/common/unifilt.cpp @@ -28,7 +28,7 @@ UnicodeFilter::~UnicodeFilter() {} * UnicodeFunctor API. * Note that UnicodeMatcher is a base class of UnicodeFilter. */ -UnicodeMatcher* UnicodeFilter::toMatcher() const { +UnicodeMatcher* UnicodeFilter::toMatcher() const U_LIFETIME_BOUND { return const_cast(this); } diff --git a/deps/icu-small/source/common/unifunct.cpp b/deps/icu-small/source/common/unifunct.cpp index 5e939cb67e3f..9f56c2565120 100644 --- a/deps/icu-small/source/common/unifunct.cpp +++ b/deps/icu-small/source/common/unifunct.cpp @@ -15,11 +15,11 @@ UOBJECT_DEFINE_ABSTRACT_RTTI_IMPLEMENTATION(UnicodeFunctor) UnicodeFunctor::~UnicodeFunctor() {} -UnicodeMatcher* UnicodeFunctor::toMatcher() const { +UnicodeMatcher* UnicodeFunctor::toMatcher() const U_LIFETIME_BOUND { return nullptr; } -UnicodeReplacer* UnicodeFunctor::toReplacer() const { +UnicodeReplacer* UnicodeFunctor::toReplacer() const U_LIFETIME_BOUND { return nullptr; } diff --git a/deps/icu-small/source/common/uniset.cpp b/deps/icu-small/source/common/uniset.cpp index 0a63dad9dd0f..719fd072d290 100644 --- a/deps/icu-small/source/common/uniset.cpp +++ b/deps/icu-small/source/common/uniset.cpp @@ -203,11 +203,11 @@ UnicodeSet::~UnicodeSet() { /** * Assigns this object to be a copy of another. */ -UnicodeSet& UnicodeSet::operator=(const UnicodeSet& o) { +UnicodeSet& UnicodeSet::operator=(const UnicodeSet& o) U_LIFETIME_BOUND { return copyFrom(o, false); } -UnicodeSet& UnicodeSet::copyFrom(const UnicodeSet& o, UBool asThawed) { +UnicodeSet& UnicodeSet::copyFrom(const UnicodeSet& o, UBool asThawed) U_LIFETIME_BOUND { if (this == &o) { return *this; } @@ -241,7 +241,7 @@ UnicodeSet& UnicodeSet::copyFrom(const UnicodeSet& o, UBool asThawed) { } else if (hasStrings()) { strings_->removeAllElements(); } - if (o.stringSpan != nullptr && !asThawed) { + if (o.stringSpan != nullptr && strings_ != nullptr && !asThawed) { stringSpan = new UnicodeSetStringSpan(*o.stringSpan, *strings_); if (stringSpan == nullptr) { // Check for memory allocation error. setToBogus(); @@ -745,7 +745,7 @@ UChar32 UnicodeSet::charAt(int32_t index) const { * @param start first character in the set, inclusive * @rparam end last character in the set, inclusive */ -UnicodeSet& UnicodeSet::set(UChar32 start, UChar32 end) { +UnicodeSet& UnicodeSet::set(UChar32 start, UChar32 end) U_LIFETIME_BOUND { clear(); complement(start, end); return *this; @@ -762,7 +762,7 @@ UnicodeSet& UnicodeSet::set(UChar32 start, UChar32 end) { * @param end last character, inclusive, of range to be added * to this set. */ -UnicodeSet& UnicodeSet::add(UChar32 start, UChar32 end) { +UnicodeSet& UnicodeSet::add(UChar32 start, UChar32 end) U_LIFETIME_BOUND { if (pinCodePoint(start) < pinCodePoint(end)) { UChar32 limit = end + 1; // Fast path for adding a new range after the last one. @@ -830,7 +830,7 @@ void dump(const UChar32* list, int32_t len) { * present. If this set already contains the specified character, * the call leaves this set unchanged. */ -UnicodeSet& UnicodeSet::add(UChar32 c) { +UnicodeSet& UnicodeSet::add(UChar32 c) U_LIFETIME_BOUND { // find smallest i such that c < list[i] // if odd, then it is IN the set // if even, then it is OUT of the set @@ -947,7 +947,7 @@ UnicodeSet& UnicodeSet::add(UChar32 c) { * @param s the source string * @return the modified set, for chaining */ -UnicodeSet& UnicodeSet::add(const UnicodeString& s) { +UnicodeSet& UnicodeSet::add(const UnicodeString& s) U_LIFETIME_BOUND { if (isFrozen() || isBogus()) return *this; int32_t cp = getSingleCP(s); if (cp < 0) { @@ -1008,7 +1008,7 @@ int32_t UnicodeSet::getSingleCP(const UnicodeString& s) { * @param the source string * @return the modified set, for chaining */ -UnicodeSet& UnicodeSet::addAll(const UnicodeString& s) { +UnicodeSet& UnicodeSet::addAll(const UnicodeString& s) U_LIFETIME_BOUND { UChar32 cp; for (int32_t i = 0; i < s.length(); i += U16_LENGTH(cp)) { cp = s.char32At(i); @@ -1023,7 +1023,7 @@ UnicodeSet& UnicodeSet::addAll(const UnicodeString& s) { * @param the source string * @return the modified set, for chaining */ -UnicodeSet& UnicodeSet::retainAll(const UnicodeString& s) { +UnicodeSet& UnicodeSet::retainAll(const UnicodeString& s) U_LIFETIME_BOUND { UnicodeSet set; set.addAll(s); retainAll(set); @@ -1036,7 +1036,7 @@ UnicodeSet& UnicodeSet::retainAll(const UnicodeString& s) { * @param the source string * @return the modified set, for chaining */ -UnicodeSet& UnicodeSet::complementAll(const UnicodeString& s) { +UnicodeSet& UnicodeSet::complementAll(const UnicodeString& s) U_LIFETIME_BOUND { UnicodeSet set; set.addAll(s); complementAll(set); @@ -1049,14 +1049,14 @@ UnicodeSet& UnicodeSet::complementAll(const UnicodeString& s) { * @param the source string * @return the modified set, for chaining */ -UnicodeSet& UnicodeSet::removeAll(const UnicodeString& s) { +UnicodeSet& UnicodeSet::removeAll(const UnicodeString& s) U_LIFETIME_BOUND { UnicodeSet set; set.addAll(s); removeAll(set); return *this; } -UnicodeSet& UnicodeSet::removeAllStrings() { +UnicodeSet& UnicodeSet::removeAllStrings() U_LIFETIME_BOUND { if (!isFrozen() && hasStrings()) { strings_->removeAllElements(); releasePattern(); @@ -1103,7 +1103,7 @@ UnicodeSet* U_EXPORT2 UnicodeSet::createFromAll(const UnicodeString& s) { * @param end last character, inclusive, of range to be retained * to this set. */ -UnicodeSet& UnicodeSet::retain(UChar32 start, UChar32 end) { +UnicodeSet& UnicodeSet::retain(UChar32 start, UChar32 end) U_LIFETIME_BOUND { if (pinCodePoint(start) <= pinCodePoint(end)) { UChar32 range[3] = { start, end+1, UNICODESET_HIGH }; retain(range, 2, 0); @@ -1113,11 +1113,11 @@ UnicodeSet& UnicodeSet::retain(UChar32 start, UChar32 end) { return *this; } -UnicodeSet& UnicodeSet::retain(UChar32 c) { +UnicodeSet& UnicodeSet::retain(UChar32 c) U_LIFETIME_BOUND { return retain(c, c); } -UnicodeSet& UnicodeSet::retain(const UnicodeString &s) { +UnicodeSet& UnicodeSet::retain(const UnicodeString &s) U_LIFETIME_BOUND { if (isFrozen() || isBogus()) { return *this; } UChar32 cp = getSingleCP(s); if (cp < 0) { @@ -1148,7 +1148,7 @@ UnicodeSet& UnicodeSet::retain(const UnicodeString &s) { * @param end last character, inclusive, of range to be removed * from this set. */ -UnicodeSet& UnicodeSet::remove(UChar32 start, UChar32 end) { +UnicodeSet& UnicodeSet::remove(UChar32 start, UChar32 end) U_LIFETIME_BOUND { if (pinCodePoint(start) <= pinCodePoint(end)) { UChar32 range[3] = { start, end+1, UNICODESET_HIGH }; retain(range, 2, 2); @@ -1161,7 +1161,7 @@ UnicodeSet& UnicodeSet::remove(UChar32 start, UChar32 end) { * The set will not contain the specified range once the call * returns. */ -UnicodeSet& UnicodeSet::remove(UChar32 c) { +UnicodeSet& UnicodeSet::remove(UChar32 c) U_LIFETIME_BOUND { return remove(c, c); } @@ -1172,7 +1172,7 @@ UnicodeSet& UnicodeSet::remove(UChar32 c) { * @param the source string * @return the modified set, for chaining */ -UnicodeSet& UnicodeSet::remove(const UnicodeString& s) { +UnicodeSet& UnicodeSet::remove(const UnicodeString& s) U_LIFETIME_BOUND { if (isFrozen() || isBogus()) return *this; int32_t cp = getSingleCP(s); if (cp < 0) { @@ -1196,7 +1196,7 @@ UnicodeSet& UnicodeSet::remove(const UnicodeString& s) { * @param end last character, inclusive, of range to be removed * from this set. */ -UnicodeSet& UnicodeSet::complement(UChar32 start, UChar32 end) { +UnicodeSet& UnicodeSet::complement(UChar32 start, UChar32 end) U_LIFETIME_BOUND { if (isFrozen() || isBogus()) { return *this; } @@ -1208,7 +1208,7 @@ UnicodeSet& UnicodeSet::complement(UChar32 start, UChar32 end) { return *this; } -UnicodeSet& UnicodeSet::complement(UChar32 c) { +UnicodeSet& UnicodeSet::complement(UChar32 c) U_LIFETIME_BOUND { return complement(c, c); } @@ -1216,7 +1216,7 @@ UnicodeSet& UnicodeSet::complement(UChar32 c) { * This is equivalent to * complement(MIN_VALUE, MAX_VALUE). */ -UnicodeSet& UnicodeSet::complement() { +UnicodeSet& UnicodeSet::complement() U_LIFETIME_BOUND { if (isFrozen() || isBogus()) { return *this; } @@ -1243,7 +1243,7 @@ UnicodeSet& UnicodeSet::complement() { * @param s the string to complement * @return this object, for chaining */ -UnicodeSet& UnicodeSet::complement(const UnicodeString& s) { +UnicodeSet& UnicodeSet::complement(const UnicodeString& s) U_LIFETIME_BOUND { if (isFrozen() || isBogus()) return *this; int32_t cp = getSingleCP(s); if (cp < 0) { @@ -1269,7 +1269,7 @@ UnicodeSet& UnicodeSet::complement(const UnicodeString& s) { * @param c set whose elements are to be added to this set. * @see #add(char, char) */ -UnicodeSet& UnicodeSet::addAll(const UnicodeSet& c) { +UnicodeSet& UnicodeSet::addAll(const UnicodeSet& c) U_LIFETIME_BOUND { if ( c.len>0 && c.list!=nullptr ) { add(c.list, c.len, 0); } @@ -1295,7 +1295,7 @@ UnicodeSet& UnicodeSet::addAll(const UnicodeSet& c) { * * @param c set that defines which elements this set will retain. */ -UnicodeSet& UnicodeSet::retainAll(const UnicodeSet& c) { +UnicodeSet& UnicodeSet::retainAll(const UnicodeSet& c) U_LIFETIME_BOUND { if (isFrozen() || isBogus()) { return *this; } @@ -1319,7 +1319,7 @@ UnicodeSet& UnicodeSet::retainAll(const UnicodeSet& c) { * @param c set that defines which elements will be removed from * this set. */ -UnicodeSet& UnicodeSet::removeAll(const UnicodeSet& c) { +UnicodeSet& UnicodeSet::removeAll(const UnicodeSet& c) U_LIFETIME_BOUND { if (isFrozen() || isBogus()) { return *this; } @@ -1338,7 +1338,7 @@ UnicodeSet& UnicodeSet::removeAll(const UnicodeSet& c) { * @param c set that defines which elements will be xor'ed from * this set. */ -UnicodeSet& UnicodeSet::complementAll(const UnicodeSet& c) { +UnicodeSet& UnicodeSet::complementAll(const UnicodeSet& c) U_LIFETIME_BOUND { if (isFrozen() || isBogus()) { return *this; } @@ -1359,7 +1359,7 @@ UnicodeSet& UnicodeSet::complementAll(const UnicodeSet& c) { * Removes all of the elements from this set. This set will be * empty after this call returns. */ -UnicodeSet& UnicodeSet::clear() { +UnicodeSet& UnicodeSet::clear() U_LIFETIME_BOUND { if (isFrozen()) { return *this; } @@ -1404,7 +1404,7 @@ UChar32 UnicodeSet::getRangeEnd(int32_t index) const { return list[index*2 + 1] - 1; } -const UnicodeString* UnicodeSet::getString(int32_t index) const { +const UnicodeString* UnicodeSet::getString(int32_t index) const U_LIFETIME_BOUND { return static_cast(strings_->elementAt(index)); } @@ -1412,7 +1412,7 @@ const UnicodeString* UnicodeSet::getString(int32_t index) const { * Reallocate this objects internal structures to take up the least * possible space, without changing this object's value. */ -UnicodeSet& UnicodeSet::compact() { +UnicodeSet& UnicodeSet::compact() U_LIFETIME_BOUND { if (isFrozen() || isBogus()) { return *this; } @@ -2025,7 +2025,7 @@ void UnicodeSet::_appendToPat(UnicodeString &result, UChar32 start, UChar32 end, * a cleaned version of the string passed to applyPattern(), if there * is one. Otherwise it will be generated. */ -UnicodeString& UnicodeSet::_toPattern(UnicodeString& result, +UnicodeString& UnicodeSet::_toPattern(UnicodeString& result U_LIFETIME_BOUND, UBool escapeUnprintable) const { if (pat != nullptr) { @@ -2065,7 +2065,7 @@ UnicodeString& UnicodeSet::_toPattern(UnicodeString& result, * calling this function is passed to a UnicodeSet constructor, it * will produce another set that is equal to this one. */ -UnicodeString& UnicodeSet::toPattern(UnicodeString& result, +UnicodeString& UnicodeSet::toPattern(UnicodeString& result U_LIFETIME_BOUND, UBool escapeUnprintable) const { result.truncate(0); @@ -2077,7 +2077,7 @@ UnicodeString& UnicodeSet::toPattern(UnicodeString& result, * This does not use this.pat, the cleaned up copy of the string * passed to applyPattern(). */ -UnicodeString& UnicodeSet::_generatePattern(UnicodeString& result, +UnicodeString& UnicodeSet::_generatePattern(UnicodeString& result U_LIFETIME_BOUND, UBool escapeUnprintable) const { result.append(u'['); @@ -2169,7 +2169,7 @@ void UnicodeSet::setPattern(const char16_t *newPat, int32_t newPatLen) { // We can regenerate an equivalent pattern later when requested. } -UnicodeSet *UnicodeSet::freeze() { +UnicodeSet* UnicodeSet::freeze() U_LIFETIME_BOUND { if(!isFrozen() && !isBogus()) { compact(); diff --git a/deps/icu-small/source/common/uniset_closure.cpp b/deps/icu-small/source/common/uniset_closure.cpp index ae777c5facdf..8f8f8a740f9e 100644 --- a/deps/icu-small/source/common/uniset_closure.cpp +++ b/deps/icu-small/source/common/uniset_closure.cpp @@ -67,7 +67,7 @@ UnicodeSet::UnicodeSet(const UnicodeString& pattern, ParsePosition& pos, UnicodeSet& UnicodeSet::applyPattern(const UnicodeString& pattern, uint32_t options, const SymbolTable* symbols, - UErrorCode& status) { + UErrorCode& status) U_LIFETIME_BOUND { ParsePosition pos(0); applyPattern(pattern, pos, options, symbols, status); if (U_FAILURE(status)) return *this; @@ -86,10 +86,10 @@ UnicodeSet& UnicodeSet::applyPattern(const UnicodeString& pattern, } UnicodeSet& UnicodeSet::applyPattern(const UnicodeString& pattern, - ParsePosition& pos, - uint32_t options, - const SymbolTable* symbols, - UErrorCode& status) { + ParsePosition& pos, + uint32_t options, + const SymbolTable* symbols, + UErrorCode& status) U_LIFETIME_BOUND { if (U_FAILURE(status)) { return *this; } @@ -101,7 +101,7 @@ UnicodeSet& UnicodeSet::applyPattern(const UnicodeString& pattern, // _applyPattern calls add() etc., which set pat to empty. UnicodeString rebuiltPat; RuleCharacterIterator chars(pattern, symbols, pos); - applyPattern(chars, symbols, rebuiltPat, options, &UnicodeSet::closeOver, 0, status); + applyPattern(pattern, pos, chars, symbols, rebuiltPat, options, &UnicodeSet::closeOver, status); if (U_FAILURE(status)) return *this; if (chars.inVariable()) { // syntaxError(chars, "Extra chars in variable value"); @@ -154,7 +154,8 @@ addCaseMapping(UnicodeSet &set, int32_t result, const char16_t *full, UnicodeStr namespace { /** For case closure on a large set, look only at code points with relevant properties. */ -const UnicodeSet &maybeOnlyCaseSensitive(const UnicodeSet &src, UnicodeSet &subset) { +const UnicodeSet &maybeOnlyCaseSensitive(const UnicodeSet &src U_LIFETIME_BOUND, + UnicodeSet &subset U_LIFETIME_BOUND) { // The subset must have been constructed with all code points, // so that the retainAll() intersection effectively copies all single code points from src. U_ASSERT(subset.contains(0, 0x10ffff)); @@ -211,7 +212,7 @@ bool scfString(const UnicodeString &s, UnicodeString &scf) { } // namespace -UnicodeSet& UnicodeSet::closeOver(int32_t attribute) { +UnicodeSet& UnicodeSet::closeOver(int32_t attribute) U_LIFETIME_BOUND { if (isFrozen() || isBogus()) { return *this; } diff --git a/deps/icu-small/source/common/uniset_props.cpp b/deps/icu-small/source/common/uniset_props.cpp index 532b17f5063f..35ba7995b943 100644 --- a/deps/icu-small/source/common/uniset_props.cpp +++ b/deps/icu-small/source/common/uniset_props.cpp @@ -18,6 +18,9 @@ * Character property dependent functions moved here from uniset.cpp */ +#include +#include + #include "unicode/utypes.h" #include "unicode/uniset.h" #include "unicode/parsepos.h" @@ -27,6 +30,7 @@ #include "unicode/uset.h" #include "unicode/locid.h" #include "unicode/brkiter.h" +#include "unicode/utfiterator.h" #include "uset_imp.h" #include "ruleiter.h" #include "cmemory.h" @@ -34,6 +38,7 @@ #include "util.h" #include "uvector.h" #include "uprops.h" +#include "patternprops.h" #include "propname.h" #include "normalizer2impl.h" #include "uinvchar.h" @@ -54,9 +59,6 @@ constexpr char ANY[] = "ANY"; // [\u0000-\U0010FFFF] constexpr char ASCII[] = "ASCII"; // [\u0000-\u007F] constexpr char ASSIGNED[] = "Assigned"; // [:^Cn:] -// Unicode name property alias -constexpr char16_t NAME_PROP[] = u"na"; - } // namespace // Cached sets ------------------------------------------------------------- *** @@ -81,6 +83,8 @@ U_CDECL_END U_NAMESPACE_BEGIN +using U_HEADER_ONLY_NAMESPACE::utfStringCodePoints; + namespace { // Cache some sets for other services -------------------------------------- *** @@ -140,6 +144,19 @@ isPOSIXClose(const UnicodeString &pattern, int32_t pos) { // memory leak checker tools #define _dbgct(me) +// Returns the character with the given name or name alias, or U_SENTINEL if no such character +// exists. +UChar32 getCharacterByName(const CharString& name) { + for (const UCharNameChoice nameChoice : std::array{U_EXTENDED_CHAR_NAME, U_CHAR_NAME_ALIAS}) { + UErrorCode ec = U_ZERO_ERROR; + UChar32 ch = u_charFromName(nameChoice, name.data(), &ec); + if (U_SUCCESS(ec)) { + return ch; + } + } + return U_SENTINEL; +} + } // namespace //---------------------------------------------------------------- @@ -163,7 +180,7 @@ UnicodeSet::UnicodeSet(const UnicodeString& pattern, //---------------------------------------------------------------- UnicodeSet& UnicodeSet::applyPattern(const UnicodeString& pattern, - UErrorCode& status) { + UErrorCode& status) U_LIFETIME_BOUND { // Equivalent to // return applyPattern(pattern, USET_IGNORE_SPACE, nullptr, status); // but without dependency on closeOver(). @@ -196,7 +213,7 @@ UnicodeSet::applyPatternIgnoreSpace(const UnicodeString& pattern, // _applyPattern calls add() etc., which set pat to empty. UnicodeString rebuiltPat; RuleCharacterIterator chars(pattern, symbols, pos); - applyPattern(chars, symbols, rebuiltPat, USET_IGNORE_SPACE, nullptr, 0, status); + applyPattern(pattern, pos, chars, symbols, rebuiltPat, USET_IGNORE_SPACE, nullptr, status); if (U_FAILURE(status)) return; if (chars.inVariable()) { // syntaxError(chars, "Extra chars in variable value"); @@ -220,438 +237,1140 @@ UBool UnicodeSet::resemblesPattern(const UnicodeString& pattern, int32_t pos) { // Implementation: Pattern parsing //---------------------------------------------------------------- -namespace { +#define U_DEBUGGING_UNICODESET_PARSING 0 + +class UnicodeSet::Lexer { + public: + Lexer(const UnicodeString &pattern, + const ParsePosition &parsePosition, + RuleCharacterIterator &chars, + uint32_t unicodeSetOptions, + const SymbolTable *const symbols, + UnicodeSet &(UnicodeSet::*caseClosure)(int32_t attribute)) + : pattern_(pattern), parsePosition_(parsePosition), chars_(chars), + unicodeSetOptions_(unicodeSetOptions), + charsOptions_(RuleCharacterIterator::PARSE_ESCAPES | + ((unicodeSetOptions & USET_IGNORE_SPACE) != 0 + ? RuleCharacterIterator::SKIP_WHITESPACE + : 0)), + symbols_(symbols), + caseClosure_(caseClosure) {} + + class LexicalElement { + public: + bool isSetOperator(const char16_t op) const { + return U_SUCCESS(errorCode_) && category_ == SET_OPERATOR && string_[0] == op; + } -/** - * A small all-inline class to manage a UnicodeSet pointer. Add - * operator->() etc. as needed. - */ -class UnicodeSetPointer { - UnicodeSet* p; -public: - inline UnicodeSetPointer() : p(nullptr) {} - inline ~UnicodeSetPointer() { delete p; } - inline UnicodeSet* pointer() { return p; } - inline UBool allocate() { - if (p == nullptr) { - p = new UnicodeSet(); + bool isStringLiteral() const { + return U_SUCCESS(errorCode_) && category_ == STRING_LITERAL; } - return p != nullptr; - } -}; -constexpr int32_t MAX_DEPTH = 100; + bool isNamedElement() const { + return U_SUCCESS(errorCode_) && category_ == NAMED_ELEMENT; + } -} // namespace + bool isBracketedElement() const { + return U_SUCCESS(errorCode_) && category_ == BRACKETED_ELEMENT; + } -/** - * Parse the pattern from the given RuleCharacterIterator. The - * iterator is advanced over the parsed pattern. - * @param chars iterator over the pattern characters. Upon return - * it will be advanced to the first character after the parsed - * pattern, or the end of the iteration if all characters are - * parsed. - * @param symbols symbol table to use to parse and dereference - * variables, or null if none. - * @param rebuiltPat the pattern that was parsed, rebuilt or - * copied from the input pattern, as appropriate. - * @param options a bit mask of zero or more of the following: - * IGNORE_SPACE, CASE. - */ -void UnicodeSet::applyPattern(RuleCharacterIterator& chars, - const SymbolTable* symbols, - UnicodeString& rebuiltPat, - uint32_t options, - UnicodeSet& (UnicodeSet::*caseClosure)(int32_t attribute), - int32_t depth, - UErrorCode& ec) { - if (U_FAILURE(ec)) return; - if (depth > MAX_DEPTH) { - ec = U_ILLEGAL_ARGUMENT_ERROR; - return; - } + std::optional element() const { + if (U_SUCCESS(errorCode_) && + (category_ == LITERAL_ELEMENT || category_ == ESCAPED_ELEMENT || + category_ == BRACKETED_ELEMENT || category_ == STRING_LITERAL)) { + return string_; + } + return std::nullopt; + } - // Syntax characters: [ ] ^ - & { } + std::optional codePoint() const { + if (U_SUCCESS(errorCode_) && (category_ == LITERAL_ELEMENT || category_ == ESCAPED_ELEMENT || + category_ == BRACKETED_ELEMENT || category_ == NAMED_ELEMENT)) { + return string_.char32At(0); + } + return std::nullopt; + } - // Recognized special forms for chars, sets: c-c s-s s&s + // If `*this` is a valid property-query or set-valued-variable, returns the set represented + // by this lexical element, which lives at least as long as `*this`. Null otherwise. + const UnicodeSet *set() const { + if (U_FAILURE(errorCode_)) { + return nullptr; + } + if (category_ == PROPERTY_QUERY || category_ == VARIABLE) { + if (precomputedSet_ != nullptr) { + return precomputedSet_; + } else { + return &set_; + } + } + return nullptr; + } - int32_t opts = RuleCharacterIterator::PARSE_VARIABLES | - RuleCharacterIterator::PARSE_ESCAPES; - if ((options & USET_IGNORE_SPACE) != 0) { - opts |= RuleCharacterIterator::SKIP_WHITESPACE; - } + const UErrorCode& errorCode() const{ + return errorCode_; + } - UnicodeString patLocal, buf; - UBool usePat = false; - UnicodeSetPointer scratch; - RuleCharacterIterator::Pos backup; +#if U_DEBUGGING_UNICODESET_PARSING + UnicodeString debugString() const { + UnicodeString result; + if (U_FAILURE(errorCode_)) { + result.append(u"Ill-formed token (") + .append(UnicodeString::fromUTF8(u_errorName(errorCode_))) + .append(u"), possibly "); + } + return result.append(category_names_[category_]) + .append(u" '") + .append(sourceText_) + .append(u"'"); + } +#endif + + private: + // See https://unicode.org/reports/tr61#Lexical-Elements. + enum Category : std::uint8_t { + SET_OPERATOR, + LITERAL_ELEMENT, + ESCAPED_ELEMENT, + NAMED_ELEMENT, + BRACKETED_ELEMENT, + STRING_LITERAL, + PROPERTY_QUERY, + // Used for ill-formed variables and set-valued variables that are not directly a + // property-query, e.g., $basicLatinLetters=[A-Za-z]. Variables that expand to a single + // lexical element instead have the category of that lexical element, e.g., $Ll=\p{Ll} has + // the category PROPERTY_QUERY, $a=a has the category LITERAL_ELEMENT, and $s={Zeichenkette} + // has the category STRING_LITERAL. + VARIABLE, + END_OF_TEXT, + }; + static constexpr std::array category_names_{{ + u"set-operator", + u"literal-element", + u"escaped-element", + u"named-element", + u"bracketed-element", + u"string-literal", + u"property-query", + u"variable", + u"(end of text)", + }}; + LexicalElement(Category category, UnicodeString string, RuleCharacterIterator::Pos after, + const UErrorCode errorCode, const UnicodeSet *precomputedSet, UnicodeSet set, + std::u16string_view sourceText, bool separated, + std::optional const &preceding) + : category_(category), string_(std::move(string)), after_(after), errorCode_(errorCode), + precomputedSet_(precomputedSet), set_(set), sourceText_(sourceText) { + if (U_FAILURE(errorCode_) || separated || !preceding.has_value()) { + return; + } + if (preceding->isSetOperator(u'[') && category == LITERAL_ELEMENT && + *codePoint() == u':') { + errorCode_ = U_MALFORMED_SET; + } else if (preceding->category_ == ESCAPED_ELEMENT) { + if (U_IS_LEAD(*preceding->codePoint()) && category_ == ESCAPED_ELEMENT && + U_IS_TRAIL(*codePoint())) { + errorCode_ = U_MALFORMED_SET; + } else if (preceding->sourceText_.length() <= 3 && category == LITERAL_ELEMENT) { + UChar32 cp = *codePoint(); + if (preceding->sourceText_[1] == u'x') { + if ((cp >= u'0' && cp <= u'9') || (cp >= u'A' && cp <= u'F') || + (cp >= u'a' && cp <= u'f')) { + errorCode_ = U_MALFORMED_SET; + } + } else if (preceding->sourceText_[1] >= u'0' && + preceding->sourceText_[1] <= u'7') { + if (cp >= u'0' && cp <= u'7') { + errorCode_ = U_MALFORMED_SET; + } + } + } + } + } + Category category_; + UnicodeString string_; + RuleCharacterIterator::Pos after_; + UErrorCode errorCode_; + const UnicodeSet *precomputedSet_; + UnicodeSet set_; + std::u16string_view sourceText_; + + friend class Lexer; + }; + + UnicodeString getPositionForDebugging() const { + return pattern_.tempSubString(0, parsePosition_.getIndex()) + u"☞" + + pattern_.tempSubString(parsePosition_.getIndex(), 60); + } - // mode: 0=before [, 1=between [...], 2=after ] - // lastItem: 0=none, 1=char, 2=set - int8_t lastItem = 0, mode = 0; - UChar32 lastChar = 0; - char16_t op = 0; + bool acceptSetOperator(char16_t op) { + if (lookahead().isSetOperator(op)) { + advance(); + return true; + } + return false; + } - UBool invert = false; + const LexicalElement &lookahead() { + if (!ahead_.has_value()) { + const RuleCharacterIterator::Pos before = getPos(); + ahead_.emplace(nextToken(behind_)); + chars_.setPos(before); + } + return *ahead_; + } - clear(); + const LexicalElement &lookahead2() { + if (!ahead2_.has_value()) { + // Note that if someone has called `getCharacterIterator` and played with the result, + // `before` may not actually be before `ahead_`, but we do not actually depend on this here, + // since we start from ahead_.after_. + const RuleCharacterIterator::Pos before = getPos(); + chars_.setPos(lookahead().after_); + ahead2_.emplace(nextToken(ahead_)); + chars_.setPos(before); + } + return *ahead2_; + } - while (mode != 2 && !chars.atEnd()) { - U_ASSERT((lastItem == 0 && op == 0) || - (lastItem == 1 && (op == 0 || op == u'-')) || - (lastItem == 2 && (op == 0 || op == u'-' || op == u'&'))); + // For use in older functions that take the `RuleCharacterIterator` directly. + // Any advancement of the resulting `RuleCharacterIterator` has no effect on the result of subsequent + // calls to `lookahead`, `lookahead2`, `advance`, or `acceptSetOperator`. + // Once `advance` or `acceptSetOperator` has been called, the result of a call to + // `getCharacterIterator` preceding the call to `advance` or `acceptSetOperator` must no longer be + // used. + RuleCharacterIterator &getCharacterIterator() { + // Make sure we compute a correct `ahead_.after_` so we do not depend on the current value of + // `getPos()` for lexing. + lookahead(); + return chars_; + } - UChar32 c = 0; - UBool literal = false; - UnicodeSet* nested = nullptr; // alias - do not delete + int32_t charsOptions() { + return charsOptions_; + } - // -------- Check for property pattern + bool atEnd() const { + return chars_.atEnd(); + } - // setMode: 0=none, 1=unicodeset, 2=propertypat, 3=preparsed - int8_t setMode = 0; - if (resemblesPropertyPattern(chars, opts)) { - setMode = 2; - } + void advance() { + // If someone called `getCharacterIterator`, we are now changing the character iterator under + // their feet; further, we may not have an `ahead_`, so if they keep playing with it we would be + // working on incorrect values of `getPos`. This is why the result of `getCharacterIterator` + // must no longer be used. + chars_.setPos(lookahead().after_); + behind_ = ahead_; + ahead_ = ahead2_; + ahead2_.reset(); + } - // -------- Parse '[' of opening delimiter OR nested set. - // If there is a nested set, use `setMode' to define how - // the set should be parsed. If the '[' is part of the - // opening delimiter for this pattern, parse special - // strings "[", "[^", "[-", and "[^-". Check for stand-in - // characters representing a nested set in the symbol - // table. + private: + // A version of getPos that returns its position instead of taking it as at out parameter, so we + // can have const positions. + RuleCharacterIterator::Pos getPos() const { + RuleCharacterIterator::Pos result; + chars_.getPos(result); + return result; + } - else { - // Prepare to backup if necessary - chars.getPos(backup); - c = chars.next(opts, literal, ec); - if (U_FAILURE(ec)) return; - - if (c == u'[' && !literal) { - if (mode == 1) { - chars.setPos(backup); // backup - setMode = 1; + LexicalElement nextToken(std::optional const& preceding) { + UErrorCode errorCode = U_ZERO_ERROR; + bool separated = false; + if (charsOptions_ & RuleCharacterIterator::SKIP_WHITESPACE) { + UChar32 s; + RuleCharacterIterator::Pos pos; + for (;;) { + UBool unusedEscaped; + chars_.getPos(pos); + s = chars_.next(charsOptions_ & ~(RuleCharacterIterator::PARSE_ESCAPES | + RuleCharacterIterator::SKIP_WHITESPACE), + unusedEscaped, errorCode); + if (!PatternProps::isWhiteSpace(s)) { + chars_.setPos(pos); + break; + } + if (s != u'\u200E' && s != u'\u200F') { + separated = true; + } + } + } + chars_.skipIgnored(charsOptions_); + if (chars_.atEnd()) { + return LexicalElement(LexicalElement::END_OF_TEXT, {}, getPos(), errorCode, + /*precomputedSet=*/nullptr, + /*set=*/{}, + u"", separated, preceding); + } + const int32_t start = parsePosition_.getIndex(); + const RuleCharacterIterator::Pos before = getPos(); + // First try to get the next character without parsing escapes. + UBool unusedEscaped; + const UChar32 first = + chars_.next(charsOptions_ & ~RuleCharacterIterator::PARSE_ESCAPES, unusedEscaped, errorCode); + if (first == u'[' || first == u'\\') { + const RuleCharacterIterator::Pos afterFirst = getPos(); + // This could be a property-query or named-element. + const UChar32 second = chars_.next(charsOptions_ & ~(RuleCharacterIterator::PARSE_ESCAPES | + RuleCharacterIterator::SKIP_WHITESPACE), + unusedEscaped, errorCode); + if ((first == u'[' && second == u':') || + (first == u'\\' && (second == u'p' || second == u'P' || second == u'N'))) { + if (second == u'N') { + UChar32 const queryResult = scanNamedElementBrackets(errorCode); + return LexicalElement( + LexicalElement::NAMED_ELEMENT, UnicodeString(queryResult), getPos(), errorCode, + /*precomputedSet=*/nullptr, + /*set=*/{}, + std::u16string_view(pattern_).substr(start, parsePosition_.getIndex() - start), + separated, preceding); } else { - // Handle opening '[' delimiter - mode = 1; - patLocal.append(u'['); - chars.getPos(backup); // prepare to backup - c = chars.next(opts, literal, ec); - if (U_FAILURE(ec)) return; - if (c == u'^' && !literal) { - invert = true; - patLocal.append(u'^'); - chars.getPos(backup); // prepare to backup - c = chars.next(opts, literal, ec); - if (U_FAILURE(ec)) return; - } - // Fall through to handle special leading '-'; - // otherwise restart loop for nested [], \p{}, etc. - if (c == u'-') { - literal = true; - // Fall through to handle literal '-' below + UnicodeSet queryResult = scanPropertyQueryAfterStart(first, second, start, errorCode); + return LexicalElement( + LexicalElement::PROPERTY_QUERY, {}, getPos(), errorCode, + /*precomputedSet=*/nullptr, /*set=*/std::move(queryResult), + std::u16string_view(pattern_).substr(start, parsePosition_.getIndex() - start), + separated, preceding); + } + } + // Not a property-query. + chars_.setPos(afterFirst); + } + if (first == u'$' && symbols_ != nullptr) { + auto nameEnd = parsePosition_; + // The SymbolTable defines the lexing of variable names past the $. + if (UnicodeString name = symbols_->parseReference(pattern_, nameEnd, pattern_.length()); + // LexicalElements returned here and from evaluateVariable are always constructed + // with separated=true, preceding=nullopt: the separation constraints are lexical, + // and variables are their own lexical elements; their values are not affected by + // lexical constraints. + !name.isEmpty()) { + chars_.jumpahead(nameEnd.getIndex() - (start + 1)); + const std::u16string_view source = + std::u16string_view(pattern_).substr(start, parsePosition_.getIndex() - start); + const UnicodeSet *precomputedSet = symbols_->lookupSet(name); + if (precomputedSet != nullptr) { + return LexicalElement(LexicalElement::VARIABLE, {}, getPos(), U_ZERO_ERROR, + precomputedSet, /*set=*/{}, source, /*separated=*/true, + /*preceding=*/std::nullopt); + } + // The variable was not a precomputed set. Use the old-fashioned `lookup`, which + // should give us its source text; if that parses as a single set or element, use + // it. Note that variables are not allowed in that expansion. + // Implementers of higher-level syntaxes that pre-parse UnicodeSet-valued variables + // can use variables in their variable definitions, but those that simply use the + // source text substitution API cannot. + const UnicodeString *const expression = symbols_->lookup(name); + if (expression == nullptr) { + return LexicalElement( + LexicalElement::VARIABLE, {}, getPos(), U_UNDEFINED_VARIABLE, + /*precomputedSet=*/nullptr, + /*set=*/{}, + source, + /*separated=*/true, + /*preceding=*/std::nullopt); + } + return evaluateVariable(*expression, source); + } + } + switch (first) { + case u'[': + return LexicalElement( + LexicalElement::SET_OPERATOR, UnicodeString(u'['), getPos(), errorCode, + /*precomputedSet=*/nullptr, + /*set=*/{}, + std::u16string_view(pattern_).substr(start, parsePosition_.getIndex() - start), + separated, preceding); + case u'\\': { + // Now try to parse the escape. + chars_.setPos(before); + UChar32 codePoint = chars_.next(charsOptions_, unusedEscaped, errorCode); + return LexicalElement( + LexicalElement::ESCAPED_ELEMENT, + UnicodeString(codePoint), getPos(), errorCode, + nullptr, + /*set=*/{}, + std::u16string_view(pattern_).substr(start, parsePosition_.getIndex() - start), + separated, preceding); + } + case u'&': + case u'-': + case u']': + case u'^': + case u'$': + // We make $ a set-operator to handle the ICU extensions involving $. + return LexicalElement( + LexicalElement::SET_OPERATOR, UnicodeString(first), getPos(), errorCode, + /*precomputedSet=*/nullptr, + /*set=*/{}, + std::u16string_view(pattern_).substr(start, parsePosition_.getIndex() - start), + separated, preceding); + case u'{': { + UnicodeString string; + UBool escaped; + UChar32 next; + int32_t codePointCount = 0; + while (!chars_.atEnd() && U_SUCCESS(errorCode)) { + const RuleCharacterIterator::Pos beforeNext = getPos(); + next = chars_.next(charsOptions_ & ~(RuleCharacterIterator::PARSE_ESCAPES | + RuleCharacterIterator::SKIP_WHITESPACE), + unusedEscaped, errorCode); + if (next == u'\\') { + const UChar32 afterBackslash = + chars_.next(charsOptions_ & ~(RuleCharacterIterator::PARSE_ESCAPES | + RuleCharacterIterator::SKIP_WHITESPACE), + unusedEscaped, errorCode); + if (afterBackslash == u'N') { + next = scanNamedElementBrackets(errorCode); + escaped = true; + } else if (afterBackslash == u'p' || afterBackslash == u'P') { + return LexicalElement(LexicalElement::STRING_LITERAL, {}, getPos(), + U_MALFORMED_SET, + /*precomputedSet=*/nullptr, + /*set=*/{}, + std::u16string_view(pattern_).substr( + start, parsePosition_.getIndex() - start), + separated, preceding); } else { - chars.setPos(backup); // backup - continue; + chars_.setPos(beforeNext); + // Parse the escape. + next = chars_.next(charsOptions_, escaped, errorCode); } - } - } else if (symbols != nullptr) { - const UnicodeFunctor *m = symbols->lookupMatcher(c); - if (m != nullptr) { - const UnicodeSet *ms = dynamic_cast(m); - if (ms == nullptr) { - ec = U_MALFORMED_SET; - return; + } else { +#if U_ICU_VERSION_MAJOR_NUM < 81 + if (U_SUCCESS(errorCode) && PatternProps::isWhiteSpace(next)) { + // Transitional prohibition of unescaped spaces in string literals (in + // ICU 78 and earlier, these were ignored; in ICU 81 they will mean + // themselves). + errorCode = UErrorCode::U_ILLEGAL_ARGUMENT_ERROR; } - // casting away const, but `nested' won't be modified - // (important not to modify stored set) - nested = const_cast(ms); - setMode = 3; +#else +#error Remove this transitional check, see ICU-23307 and ICU-TC minutes of 2026-01-16. +#endif + escaped = false; + } + if (!escaped && next == u'}') { + return LexicalElement( + codePointCount == 1 ? LexicalElement::BRACKETED_ELEMENT + : LexicalElement::STRING_LITERAL, + std::move(string), getPos(), errorCode, + /*precomputedSet=*/nullptr, + /*set=*/{}, + std::u16string_view(pattern_).substr(start, parsePosition_.getIndex() - start), + separated, preceding); } + string.append(next); + codePointCount += 1; } + return LexicalElement( + LexicalElement::STRING_LITERAL, {}, getPos(), U_MALFORMED_SET, + /*precomputedSet=*/nullptr, + /*set=*/{}, + std::u16string_view(pattern_).substr(start, parsePosition_.getIndex() - start), + separated, preceding); } + default: + return LexicalElement( + LexicalElement::LITERAL_ELEMENT, UnicodeString(first), getPos(), errorCode, nullptr, + /*set=*/{}, + std::u16string_view(pattern_).substr(start, parsePosition_.getIndex() - start), + separated, preceding); + } + } - // -------- Handle a nested set. This either is inline in - // the pattern or represented by a stand-in that has - // previously been parsed and was looked up in the symbol - // table. - - if (setMode != 0) { - if (lastItem == 1) { - if (op != 0) { - // syntaxError(chars, "Char expected after operator"); - ec = U_MALFORMED_SET; - return; + UChar32 scanNamedElementBrackets(UErrorCode &errorCode) { + UBool unusedEscaped; + const UChar32 open = chars_.next(charsOptions_ & ~(RuleCharacterIterator::PARSE_ESCAPES | + RuleCharacterIterator::SKIP_WHITESPACE), + unusedEscaped, errorCode); + if (open == u'{') { + int32_t start = parsePosition_.getIndex(); + std::optional hex; + std::optional literal; + while (!chars_.atEnd() && U_SUCCESS(errorCode)) { + UChar32 last = chars_.next(charsOptions_ & ~(RuleCharacterIterator::PARSE_ESCAPES | + RuleCharacterIterator::SKIP_WHITESPACE), + unusedEscaped, errorCode); + if (last == u':') { + if (!hex.has_value()) { + hex.emplace(); + if (start == parsePosition_.getIndex() - 1) { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return {}; + } + for (char16_t digit : std::u16string_view(pattern_).substr( + start, parsePosition_.getIndex() - 1 - start)) { + uint8_t nibble; + if (digit >= u'0' && digit <= u'9') { + nibble = digit - '0'; + } else { + digit = digit & ~0x20; + if (digit >= u'A' && digit <= u'F') { + nibble = digit - u'A' + 0xA; + } else { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return {}; + } + } + *hex = (*hex << 4) + nibble; + if (hex > 0x10FFFF) { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return {}; + } + } + } else if (!literal.has_value()) { + const auto literalCodePoints = utfStringCodePoints( + std::u16string_view(pattern_).substr(start, + parsePosition_.getIndex() - 1 - start)); + auto it = literalCodePoints.begin(); + if (it == literalCodePoints.end() || !it->wellFormed() || + (literal = it->codePoint(), ++it) != literalCodePoints.end()) { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return {}; + } + } else { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return {}; + } + start = parsePosition_.getIndex(); + } else if (last == u'}') { + const std::u16string_view u16name = std::u16string_view(pattern_).substr( + start, parsePosition_.getIndex() - 1 - start); + const UChar32 result = getCharacterByName(CharString().appendInvariantChars( + u16name.data(), static_cast(u16name.length()), errorCode)); + if (!U_SUCCESS(errorCode)) { + // Convert U_INVARIANT_CONVERSION_ERROR to U_ILLEGAL_ARGUMENT_ERROR. + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return {}; + } + if (result < 0 || (hex.has_value() && result != hex) || + (literal.has_value() && result != literal)) { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return {}; + } + return result; } - add(lastChar, lastChar); - _appendToPat(patLocal, lastChar, false); - lastItem = 0; - op = 0; } + } + if (U_SUCCESS(errorCode)) { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + } + return {}; + } - if (op == u'-' || op == u'&') { - patLocal.append(op); + LexicalElement evaluateVariable(const UnicodeString &expression, + const std::u16string_view source) { + UErrorCode errorCode = U_ZERO_ERROR; + ParsePosition expressionPosition; + RuleCharacterIterator expressionIterator(expression, symbols_, expressionPosition); + // Do not pass the symbols: we do not support recursive expansion of variables. + Lexer expressionLexer(expression, expressionPosition, expressionIterator, unicodeSetOptions_, + /*symbols=*/nullptr, caseClosure_); + auto variableToken = expressionLexer.lookahead(); + if (variableToken.isSetOperator(u'[')) { + UnicodeString rebuiltPattern; + UnicodeSet expressionValue = + parseUnicodeSet(expressionLexer, rebuiltPattern, unicodeSetOptions_, caseClosure_, + /*depth=*/0, errorCode); + expressionValue.setPattern(rebuiltPattern); + if (!expressionLexer.atEnd()) { + return LexicalElement( + LexicalElement::VARIABLE, {}, getPos(), U_MALFORMED_VARIABLE_DEFINITION, + /*precomputedSet=*/nullptr, + /*set=*/{}, + source, + /*separated=*/true, + /*preceding=*/std::nullopt); } - - if (nested == nullptr) { - // lazy allocation - if (!scratch.allocate()) { - ec = U_MEMORY_ALLOCATION_ERROR; - return; - } - nested = scratch.pointer(); + return LexicalElement( + LexicalElement::VARIABLE, {}, getPos(), errorCode, + /*precomputedSet=*/nullptr, + /*set=*/std::move(expressionValue), + source, + /*separated=*/true, + /*preceding=*/std::nullopt); + } else { + expressionLexer.advance(); + if (!expressionLexer.atEnd()) { + return LexicalElement( + LexicalElement::VARIABLE, {}, getPos(), U_MALFORMED_VARIABLE_DEFINITION, + /*precomputedSet=*/nullptr, + /*set=*/{}, + source, + /*separated=*/true, + /*preceding=*/std::nullopt); } - switch (setMode) { - case 1: - nested->applyPattern(chars, symbols, patLocal, options, caseClosure, depth + 1, ec); - break; - case 2: - chars.skipIgnored(opts); - nested->applyPropertyPattern(chars, patLocal, ec); - if (U_FAILURE(ec)) return; - break; - case 3: // `nested' already parsed - nested->_toPattern(patLocal, false); - break; + switch (variableToken.category_) { + case LexicalElement::LITERAL_ELEMENT: + case LexicalElement::ESCAPED_ELEMENT: + case LexicalElement::NAMED_ELEMENT: + case LexicalElement::BRACKETED_ELEMENT: + case LexicalElement::STRING_LITERAL: + case LexicalElement::PROPERTY_QUERY: + // Return the same lexical element that we found while parsing the variable contents, + // except the source position corresponds to the position of the variable rather than 0 + // in its expansion, and the source is the name of the variable rather than its + // expansion. + return LexicalElement( + variableToken.category_, std::move(variableToken.string_), getPos(), + variableToken.errorCode_, variableToken.precomputedSet_, std::move(variableToken.set_), source, + /*separated=*/true, + /*preceding=*/std::nullopt); + default: + return LexicalElement(LexicalElement::VARIABLE, {}, getPos(), + U_MALFORMED_VARIABLE_DEFINITION, + /*precomputedSet=*/nullptr, + /*set=*/{}, source, + /*separated=*/true, + /*preceding=*/std::nullopt); } + } + } - usePat = true; - - if (mode == 0) { - // Entire pattern is a category; leave parse loop - *this = *nested; - mode = 2; - break; + UnicodeSet scanPropertyQueryAfterStart(UChar32 first, UChar32 second, int32_t queryStart, UErrorCode &errorCode) { + std::optional queryOperatorPosition; + int32_t queryExpressionStart = parsePosition_.getIndex(); + bool exteriorlyNegated = false; + bool interiorlyNegated = false; + UBool unusedEscaped; + // Do not skip whitespace so we can recognize unspaced :]. Lex escapes and + // named-element: while ICU does not support string-valued properties and thus has no + // use for escapes, we still want to lex through escapes to allow downstream + // implementations (mostly unicodetools) to implement string-valued properties. + const UChar32 third = chars_.next(charsOptions_ & ~(RuleCharacterIterator::PARSE_ESCAPES | + RuleCharacterIterator::SKIP_WHITESPACE), + unusedEscaped, errorCode); + if (first == u'\\') { + if (third != u'{') { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return {}; } - - switch (op) { - case u'-': - removeAll(*nested); - break; - case u'&': - retainAll(*nested); - break; - case 0: - addAll(*nested); - break; + exteriorlyNegated = second == u'P'; + queryExpressionStart = parsePosition_.getIndex(); + } else { + if (third == u'^') { + exteriorlyNegated = true; + queryExpressionStart = parsePosition_.getIndex(); } - - op = 0; - lastItem = 2; - - continue; - } - - if (mode == 0) { - // syntaxError(chars, "Missing '['"); - ec = U_MALFORMED_SET; - return; } - - // -------- Parse special (syntax) characters. If the - // current character is not special, or if it is escaped, - // then fall through and handle it below. - - if (!literal) { - switch (c) { - case u']': - if (lastItem == 1) { - add(lastChar, lastChar); - _appendToPat(patLocal, lastChar, false); - } - // Treat final trailing '-' as a literal - if (op == u'-') { - add(op, op); - patLocal.append(op); - } else if (op == u'&') { - // syntaxError(chars, "Trailing '&'"); - ec = U_MALFORMED_SET; - return; - } - patLocal.append(u']'); - mode = 2; - continue; - case u'-': - if (op == 0) { - if (lastItem != 0) { - op = static_cast(c); - continue; - } else { - // Treat final trailing '-' as a literal - add(c, c); - c = chars.next(opts, literal, ec); - if (U_FAILURE(ec)) return; - if (c == u']' && !literal) { - patLocal.append(u"-]", 2); - mode = 2; - continue; - } + RuleCharacterIterator::Pos beforePenultimate = getPos(); + UChar32 penultimateUnescaped = + chars_.next(charsOptions_ & ~(RuleCharacterIterator::PARSE_ESCAPES | + RuleCharacterIterator::SKIP_WHITESPACE), + unusedEscaped, errorCode); + + while (!chars_.atEnd() && U_SUCCESS(errorCode)) { + const RuleCharacterIterator::Pos beforeLast = getPos(); + UChar32 lastUnescaped = + chars_.next(charsOptions_ & ~(RuleCharacterIterator::PARSE_ESCAPES | + RuleCharacterIterator::SKIP_WHITESPACE), + unusedEscaped, errorCode); + if (penultimateUnescaped == u'\\') { + if (lastUnescaped == 'N') { + scanNamedElementBrackets(errorCode); + if (!U_SUCCESS(errorCode)) { + return {}; } + } else { + // There must be an escaped-element starting at beforePenultimate. Go + // back there and advance through it. + chars_.setPos(beforePenultimate); + chars_.next(charsOptions_ & ~RuleCharacterIterator::SKIP_WHITESPACE, unusedEscaped, + errorCode); } - // syntaxError(chars, "'-' not after char or set"); - ec = U_MALFORMED_SET; - return; - case u'&': - if (lastItem == 2 && op == 0) { - op = static_cast(c); - continue; - } - // syntaxError(chars, "'&' not after set"); - ec = U_MALFORMED_SET; - return; - case u'^': - // syntaxError(chars, "'^' not after '['"); - ec = U_MALFORMED_SET; - return; - case u'{': - if (op != 0) { - // syntaxError(chars, "Missing operand after operator"); - ec = U_MALFORMED_SET; - return; - } - if (lastItem == 1) { - add(lastChar, lastChar); - _appendToPat(patLocal, lastChar, false); + // Neither a named-element nor an escaped-element can be part of a closing :]. + lastUnescaped = -1; + } else if (!queryOperatorPosition.has_value() && lastUnescaped == u'=') { + queryOperatorPosition = parsePosition_.getIndex() - 1; + } else if (!queryOperatorPosition.has_value() && lastUnescaped == u'≠') { + if (exteriorlyNegated) { + // Reject doubly negated property queries. + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return {}; } - lastItem = 0; - buf.truncate(0); - { - UBool ok = false; - while (!chars.atEnd()) { - c = chars.next(opts, literal, ec); - if (U_FAILURE(ec)) return; - if (c == u'}' && !literal) { - ok = true; - break; - } - buf.append(c); - } - if (!ok) { - // syntaxError(chars, "Invalid multicharacter string"); - ec = U_MALFORMED_SET; - return; + interiorlyNegated = true; + queryOperatorPosition = parsePosition_.getIndex() - 1; + } else if ((first == u'[' && penultimateUnescaped == u':' && lastUnescaped == u']') || + (first == u'\\' && lastUnescaped == u'}')) { + // Note that no unescaping is performed here, as ICU does not support string-valued or + // or miscellaneous properties. + const int32_t queryExpressionLimit = + first == u'[' ? parsePosition_.getIndex() - 2 : parsePosition_.getIndex() - 1; + // Contrary to Java, applyPropertyAlias does not support a null property-predicate in + // C++; instead "" indicates the absence of a property-predicate. This is OK with the + // properties supported by ICU, but not with string-valued or miscellaneous properties; + // see https://github.com/unicode-org/icu/pull/3456. + UnicodeString propertyPredicate; + if (queryOperatorPosition.has_value()) { + propertyPredicate = + pattern_.tempSubStringBetween(*queryOperatorPosition + 1, queryExpressionLimit); + if (propertyPredicate.isEmpty()) { + // \p{X=} is valid if X is a string-valued or miscellaneous property, but + // ICU does not support those. Thus, it is invalid for ICU purposes, and + // passing an empty propertyPredicate to applyPropertyAlias can be valid + // (this is how we represent \p{X}), so we need to return the error here. + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return {}; } } - // We have new string. Add it to set and continue; - // we don't need to drop through to the further - // processing - add(buf); - patLocal.append(u'{'); - _appendToPat(patLocal, buf, false); - patLocal.append(u'}'); - continue; - case SymbolTable::SYMBOL_REF: - // symbols nosymbols - // [a-$] error error (ambiguous) - // [a$] anchor anchor - // [a-$x] var "x"* literal '$' - // [a-$.] error literal '$' - // *We won't get here in the case of var "x" - { - chars.getPos(backup); - c = chars.next(opts, literal, ec); - if (U_FAILURE(ec)) return; - UBool anchor = (c == u']' && !literal); - if (symbols == nullptr && !anchor) { - c = SymbolTable::SYMBOL_REF; - chars.setPos(backup); - break; // literal '$' - } - if (anchor && op == 0) { - if (lastItem == 1) { - add(lastChar, lastChar); - _appendToPat(patLocal, lastChar, false); - } - add(U_ETHER); - usePat = true; - patLocal.append(static_cast(SymbolTable::SYMBOL_REF)); - patLocal.append(u']'); - mode = 2; - continue; - } - // syntaxError(chars, "Unquoted '$'"); - ec = U_MALFORMED_SET; - return; + UnicodeSet result; + result.applyPropertyAlias( + pattern_.tempSubStringBetween(queryExpressionStart, + queryOperatorPosition.value_or(queryExpressionLimit)), + propertyPredicate, errorCode); + if (exteriorlyNegated != interiorlyNegated) { + result.complement().removeAllStrings(); } - default: - break; + result.setPattern(pattern_.tempSubStringBetween(queryStart, parsePosition_.getIndex())); + return result; } + beforePenultimate = beforeLast; + penultimateUnescaped = lastUnescaped; } + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return {}; + } - // -------- Parse literal characters. This includes both - // escaped chars ("\u4E01") and non-syntax characters - // ("a"). - - switch (lastItem) { - case 0: - lastItem = 1; - lastChar = c; - break; - case 1: - if (op == u'-') { - if (lastChar >= c) { - // Don't allow redundant (a-a) or empty (b-a) ranges; - // these are most likely typos. - // syntaxError(chars, "Invalid range"); - ec = U_MALFORMED_SET; - return; - } - add(lastChar, c); - _appendToPat(patLocal, lastChar, false); - patLocal.append(op); - _appendToPat(patLocal, c, false); - lastItem = 0; - op = 0; - } else { - add(lastChar, lastChar); - _appendToPat(patLocal, lastChar, false); - lastChar = c; + const UnicodeString &pattern_; + const ParsePosition &parsePosition_; + RuleCharacterIterator &chars_; + const uint32_t unicodeSetOptions_; + const int32_t charsOptions_; + const SymbolTable *const symbols_; + UnicodeSet &(UnicodeSet::* const caseClosure_)(int32_t attribute); + std::optional behind_; + std::optional ahead_; + std::optional ahead2_; +}; + +namespace { + +constexpr int32_t MAX_DEPTH = 100; + +#if U_DEBUGGING_UNICODESET_PARSING + +#define U_UNICODESET_RETURN_IF_ERROR(result, ec) \ + do { \ + constexpr std::string_view functionName = __func__; \ + static_assert(functionName.substr(0, 5) == "parse"); \ + if (U_FAILURE(ec)) { \ + if (depth < 5) { \ + printf("--- in %s l. %d\n", __func__ + 5, __LINE__); \ + } else if (depth == 5 && std::string_view(__func__ + 5) == "UnicodeSet") { \ + printf("--- [...]\n"); \ + } \ + return result; \ + } \ + } while (false) +#define U_UNICODESET_RETURN_WITH_PARSE_ERROR(result, expected, actual, lexer, ec) \ + do { \ + constexpr std::string_view functionName = __func__; \ + static_assert(functionName.substr(0, 5) == "parse"); \ + std::string actualUTF8; \ + std::string contextUTF8; \ + printf("*** Expected %s, got %s %s\n", (expected), \ + UnicodeString(actual).toUTF8String(actualUTF8).c_str(), \ + lexer.getPositionForDebugging().toUTF8String(contextUTF8).c_str()); \ + printf("--- in %s l. %d\n", __func__ + 5, __LINE__); \ + if (U_FAILURE(lexer.lookahead().errorCode())) { \ + (ec) = lexer.lookahead().errorCode(); \ + } else { \ + (ec) = U_MALFORMED_SET; \ + } \ + return result; \ + } while (false) + +#else + +#define U_UNICODESET_RETURN_IF_ERROR(result, ec) \ + do { \ + if (U_FAILURE(ec)) { \ + return result; \ + } \ + } while (false) +#define U_UNICODESET_RETURN_WITH_PARSE_ERROR(result, expected, actual, lexer, ec) \ + do { \ + if (U_FAILURE(lexer.lookahead().errorCode())) { \ + (ec) = lexer.lookahead().errorCode(); \ + } else { \ + (ec) = U_MALFORMED_SET; \ + } \ + return result; \ + } while (false) + +#endif + +} // namespace + +/** + * Parse the pattern from the given RuleCharacterIterator. The + * iterator is advanced over the parsed pattern. + * @param pattern The pattern, only used by debug traces. + * @param parsePosition The ParsePosition underlying chars, only used by debug traces. + * @param chars iterator over the pattern characters. Upon return + * it will be advanced to the first character after the parsed + * pattern, or the end of the iteration if all characters are + * parsed. + * @param symbols symbol table to use to parse and dereference + * variables, or null if none. + * @param rebuiltPat the pattern that was parsed, rebuilt or + * copied from the input pattern, as appropriate. + * @param options a bit mask of zero or more of the following: + * IGNORE_SPACE, CASE. + */ + +void UnicodeSet::applyPattern(const UnicodeString &pattern, + const ParsePosition &parsePosition, + RuleCharacterIterator &chars, + const SymbolTable *symbols, + UnicodeString &rebuiltPat, + uint32_t options, + UnicodeSet &(UnicodeSet::*caseClosure)(int32_t attribute), + UErrorCode &ec) { + if (U_FAILURE(ec)) return; + Lexer lexer(pattern, parsePosition, chars, options, symbols, caseClosure); + *this = parseUnicodeSet(lexer, rebuiltPat, options, caseClosure, /*depth=*/0, ec); +} + +UnicodeSet UnicodeSet::parseUnicodeSet(Lexer &lexer, + UnicodeString& rebuiltPat, + uint32_t options, + UnicodeSet& (UnicodeSet::*caseClosure)(int32_t attribute), + int32_t depth, + UErrorCode &ec) { + UnicodeSet result; + + if (depth > MAX_DEPTH) { + U_UNICODESET_RETURN_WITH_PARSE_ERROR({}, ("depth <= " + std::to_string(MAX_DEPTH)).c_str(), + ("depth = " + std::to_string(depth)).c_str(), lexer, + ec); + } + + bool isComplement = false; + // Whether to keep the syntax of the pattern at this level, only doing basic pretty-printing, e.g., + // turn [ c - z[a]a - b ] into [c-z[a]a-b], but not into [a-z]. + // This is true for a property query, or when there is a nested set. Note that since we recurse, + // innermost sets consisting only of ranges will get simplified. + bool preserveSyntaxInPattern = false; + // A pattern that preserves the original syntax but strips spaces, normalizes escaping, etc. + UnicodeString prettyPrintedPattern; + if (lexer.lookahead().set() != nullptr) { + // UnicodeSet ::= property-query + // Extension: + // | set-valued-variable + result = *lexer.lookahead().set(); + result._toPattern(prettyPrintedPattern, /*escapeUnprintable=*/false); + lexer.advance(); + preserveSyntaxInPattern = true; + } else { + // UnicodeSet ::= [ Content ] + // | Complement ::= [ ^ Content ] + if (lexer.acceptSetOperator(u'[')) { + prettyPrintedPattern.append(u'['); + if (lexer.acceptSetOperator(u'^')) { + prettyPrintedPattern.append(u'^'); + isComplement = true; } - break; - case 2: - if (op != 0) { - // syntaxError(chars, "Set expected after operator"); - ec = U_MALFORMED_SET; - return; + result = parseContent(lexer, prettyPrintedPattern, options, caseClosure, depth, + /*containsSetOperation=*/preserveSyntaxInPattern, ec); + U_UNICODESET_RETURN_IF_ERROR(result, ec); + if (!lexer.acceptSetOperator(u']')) { + U_UNICODESET_RETURN_WITH_PARSE_ERROR(result, "]", lexer.lookahead().debugString(), + lexer, ec); } - lastChar = c; - lastItem = 1; - break; + prettyPrintedPattern.append(u']'); + } else { + U_UNICODESET_RETURN_WITH_PARSE_ERROR(result, "property-query | [", + lexer.lookahead().debugString(), lexer, ec); } } - if (mode != 2) { - // syntaxError(chars, "Missing ']'"); - ec = U_MALFORMED_SET; - return; - } - - chars.skipIgnored(opts); - /** - * Handle global flags (invert, case insensitivity). If this + * Handle global flags (isComplement, case insensitivity). If this * pattern should be compiled case-insensitive, then we need * to close over case BEFORE COMPLEMENTING. This makes * patterns like /[^abc]/i work. */ if ((options & USET_CASE_MASK) != 0) { - (this->*caseClosure)(options); + (result.*caseClosure)(options); } - if (invert) { - complement().removeAllStrings(); // code point complement + if (isComplement) { + result.complement().removeAllStrings(); // code point complement + } + if (preserveSyntaxInPattern) { + rebuiltPat.append(prettyPrintedPattern); + } else { + result._generatePattern(rebuiltPat, /*escapeUnprintable=*/false); } + return result; +} - // Use the rebuilt pattern (patLocal) only if necessary. Prefer the - // generated pattern. - if (usePat) { - rebuiltPat.append(patLocal); +UnicodeSet UnicodeSet::parseContent(Lexer &lexer, + UnicodeString &rebuiltPat, + uint32_t options, + UnicodeSet &(UnicodeSet::*caseClosure)(int32_t attribute), + int32_t depth, + bool &containsSetOperation, + UErrorCode &ec) { + UnicodeSet result; + // Content ::= "" + // | ElementList + // | ElementList UnescapedHyphenMinus + // -- ICU extensions: + // | Æther + // | ElementList Æther + // | DollarElements UnescapedHyphenMinus + // | DollarElements Æther + // | ElementList DollarElements UnescapedHyphenMinus + // | ElementList DollarElements Æther + // Æther ::= $ -- ICU extension + // ElementList ::= UnescapedHyphenMinus + // | Elements + // | ElementList Elements + // | SetOperation + // | ElementList DollarElements Elements -- ICU extension + // SetOperation ::= Union + // | Intersection + // | Difference + // Union ::= UnicodeSet + // | ElementList UnicodeSet + // | ElementList DollarElements UnicodeSet -- ICU extension + // -- ICU extension: + // DollarElements ::= $ + // | RangeElement-$ + // But that is not LL (we cannot tell if we have a SetOperation or not by looking at the + // first Elements), so we parse it as described in the note, + // ElementList ::= Mutation Mutations | UnescapedHyphenMinus Mutations + // Mutations ::= "" | Mutation Mutations + // Mutation ::= Elements | SetOperations + // Where a Mutation is not a subexpression, but a modification of the enclosing ElementList, + // either adding or removing characters; this means that `result.parseMutation` adds to or + // removes from `result`, instead of being static returning a set. + // In parseSetOperations below, we will describe the logic both in terms of the LR + // expression grammar, and in terms of the LL grammar. + // With the DollarElements ICU extension, a non-final Mutation can be DollarElements, so this + // becomes + // ElementList ::= Mutations FinalMutation + // | UnescapedHyphenMinus Mutations FinalMutation + // | UnescapedHyphenMinus + // Mutation ::= Elements + // | SetOperations + // | DollarElements -- ICU extension + // FinalMutation ::= Elements + // | SetOperations + if (lexer.acceptSetOperator(u'-')) { + result.add(u'-'); + // When we otherwise preserve the syntax, we escape an initial UnescapedHyphenMinus, but not a + // final one, for consistency with older ICU behaviour. + rebuiltPat.append(u"\\-"); + } + while (!lexer.atEnd()) { + if (lexer.acceptSetOperator(u'-')) { + // We can be here on the first iteration: [--] is allowed by the + // grammar and by the old parser. + rebuiltPat.append(u'-'); + result.add(u'-'); + return result; + } else if (lexer.lookahead().isSetOperator(u'$')) { + if (lexer.lookahead2().isSetOperator(u']')) { + // ICU extensions: A $ is allowed in an ElementList if followed by Elements, or + // if followed by UnicodeSet (in a Union). + // A $ at the end of a Content is an Æther. + rebuiltPat.append(u'$'); + // Consume the dollar. + lexer.advance(); + result.add(U_ETHER); + containsSetOperation = true; + return result; + } + } + if (lexer.lookahead().isSetOperator(u']')) { + return result; + } + // Also handles FinalMutation. + result.parseMutation(lexer, rebuiltPat, options, caseClosure, depth, containsSetOperation, + ec); + U_UNICODESET_RETURN_IF_ERROR(result, ec); + } + return result; +} + +void UnicodeSet::parseMutation(Lexer &lexer, + UnicodeString &rebuiltPat, + uint32_t options, + UnicodeSet &(UnicodeSet::*caseClosure)(int32_t attribute), + int32_t depth, + bool &containsSetOperation, + UErrorCode &ec) { + // Mutation ::= Elements + // | SetOperations + // | DollarElements -- ICU extension + // FinalMutation ::= Elements + // | SetOperations + // SetOperations ::= UnicodeSet RightHandSides + // So if we see the beginning of a UnicodeSet, we have SetOperations. + if (lexer.lookahead().isSetOperator('[') || lexer.lookahead().set() != nullptr) { + containsSetOperation = true; + parseSetOperations(lexer, rebuiltPat, options, caseClosure, depth, ec); + U_UNICODESET_RETURN_IF_ERROR(, ec); } else { - _generatePattern(rebuiltPat, false); + // Also handles DollarElements. + addAll(parseElements(lexer, rebuiltPat, ec)); + U_UNICODESET_RETURN_IF_ERROR(, ec); } - if (isBogus() && U_SUCCESS(ec)) { - // We likely ran out of memory. AHHH! - ec = U_MEMORY_ALLOCATION_ERROR; +} + +void UnicodeSet::parseSetOperations(Lexer &lexer, + UnicodeString &rebuiltPat, + uint32_t options, + UnicodeSet &(UnicodeSet::*caseClosure)(int32_t attribute), + int32_t depth, + UErrorCode &ec) { + // When we return from this function, this object represents a + // https://www.unicode.org/reports/tr61/#SetOperation: + // SetOperation ::= Union + // | Intersection + // | Difference + // Union ::= UnicodeSet + // | ElementList UnicodeSet + // | ElementList DollarElements UnicodeSet -- ICU extension + // Intersection ::= SetOperation & UnicodeSet + // Difference ::= SetOperation - UnicodeSet + // since we parse top-down, we have already gone past any ElementList in the Union and added + // those to this object, and we end up with the UnicodeSet of the Union following by any + // right hand sides. In the LL grammar from the note, this is: + // SetOperations ::= UnicodeSet RightHandSides + // RightHandSides ::= "" + // | & UnicodeSet RightHandSides + // | - UnicodeSet RightHandSides + // but note that the tree resulting from this LL version is not an expression tree: the + // operations are left-associative. + // Start by parsing the first UnicodeSet. + const UnicodeSet leftHandSide = + parseUnicodeSet(lexer, rebuiltPat, options, caseClosure, depth + 1, ec); + addAll(leftHandSide); + U_UNICODESET_RETURN_IF_ERROR(, ec); + // In terms of the LR expression grammar, at this point this object is the Union, which is a + // SetOperation. + + // Keep looking for an operator that would continue the RightHandSides in the LL grammar. + // The loop terminates because when we run out of source text, the lookahead token will not be a + // set operator, so that we hit the else branch and return. + for (;;) { + // In terms of the LR expression grammar, at this point this object is a SetOperation; if & + // follows, we have an Intersection; if - follows, we have a Difference. + if (lexer.acceptSetOperator(u'&')) { + // Intersection ::= SetOperation & UnicodeSet + rebuiltPat.append(u'&'); + const UnicodeSet rightHandSide = + parseUnicodeSet(lexer, rebuiltPat, options, caseClosure, depth + 1, ec); + U_UNICODESET_RETURN_IF_ERROR(, ec); + retainAll(rightHandSide); + } else if (lexer.lookahead().isSetOperator(u'-')) { + // Here the grammar requires two tokens of lookahead to figure out whether the - is + // the operator of a Difference or an UnescapedHyphenMinus in the enclosing Union. + if (lexer.lookahead2().isSetOperator(u']')) { + // The operator is actually an UnescapedHyphenMinus; terminate the SetOperation + // before it. We return to parseMutation, which immediately returns to + // parseContent, which will accept the - and add it to *this. + return; + } + // Consume the hyphen-minus. + lexer.advance(); + // Difference ::= SetOperation - UnicodeSet + rebuiltPat.append(u'-'); + const UnicodeSet rightHandSide = + parseUnicodeSet(lexer, rebuiltPat, options, caseClosure, depth + 1, ec); + U_UNICODESET_RETURN_IF_ERROR(, ec); + removeAll(rightHandSide); + } else { + // Not an operator, end of the SetOperation (and of the SetOperations in the LL + // grammar). + return; + } + } +} + +UnicodeSet UnicodeSet::parseElements(Lexer &lexer, + UnicodeString &rebuiltPat, + UErrorCode &ec) { + // Elements ::= Element + // | Range + // Range ::= RangeElement - RangeElement + // | $ - RangeElement -- ICU extension + // RangeElement ::= literal-element + // | escaped-element + // | named-element + // | bracketed-element + // Element ::= RangeElement + // | string-literal + // In addition, this function handles the following ICU extension: + // DollarElements ::= $ + // | RangeElement - $ + // which cannot appear at the end of Content. + // A Content-final $ would already have been interpreted as an Æther by parseContent, so we + // only need to check that RangeElement - $ is not Content-final. + if (lexer.lookahead().isStringLiteral()) { + const UnicodeString element = *lexer.lookahead().element(); + rebuiltPat.append(u'{'); + _appendToPat(rebuiltPat, element, /*escapeUnprintable=*/false); + rebuiltPat.append(u'}'); + lexer.advance(); + return UnicodeSet().add(element); + } + UChar32 first; + if (lexer.lookahead().isSetOperator(u'$')) { + // Disallowed by UTS #61, but historically accepted by ICU. This is an extension. + first = u'$'; + } else if (lexer.lookahead().codePoint().has_value()) { + first = *lexer.lookahead().codePoint(); + } else { + U_UNICODESET_RETURN_WITH_PARSE_ERROR({}, "RangeElement | string-literal", + lexer.lookahead().debugString(), lexer, ec); } + lexer.advance(); + _appendToPat(rebuiltPat, first, /*escapeUnprintable=*/false); + if (!lexer.lookahead().isSetOperator(u'-')) { + // No operator, + // Elements ::= Element + return UnicodeSet(first, first); + } + // Here the grammar requires two tokens of lookahead to figure out whether the - is the operator + // of a Range or an UnescapedHyphenMinus in the enclosing Union. + if (lexer.lookahead2().isSetOperator(u']')) { + // The operator is actually an UnescapedHyphenMinus; terminate the Elements before it. + return UnicodeSet(first, first); + } + // Consume the hyphen-minus. + lexer.advance(); + // Elements ::= Range ::= RangeElement - RangeElement + rebuiltPat.append(u'-'); + UChar32 last; + if (lexer.lookahead().isSetOperator(u'$')) { + // Disallowed by UTS #61, but historically accepted by ICU except at the end of a Content. + // This is an extension. + last = u'$'; + if (lexer.lookahead2().isSetOperator(u']')) { + U_UNICODESET_RETURN_WITH_PARSE_ERROR( + {}, "Elements or UnicodeSet after Range ending in unescaped $", + lexer.lookahead().debugString() + u" followed by " + + lexer.lookahead2().debugString(), + lexer, ec); + } + } else if (lexer.lookahead().codePoint().has_value()) { + last = *lexer.lookahead().codePoint(); + } else { + U_UNICODESET_RETURN_WITH_PARSE_ERROR({}, "RangeElement", lexer.lookahead().debugString(), + lexer, ec); + } + if (last <= first) { + U_UNICODESET_RETURN_WITH_PARSE_ERROR({}, "first < last in Range", + UnicodeString(last) + u"-" + UnicodeString(first), + lexer, ec); + } + lexer.advance(); + _appendToPat(rebuiltPat, last, /*escapeUnprintable=*/false); + return UnicodeSet(first, last); } //---------------------------------------------------------------- @@ -751,23 +1470,6 @@ void UnicodeSet::applyFilter(UnicodeSet::Filter filter, namespace { -UBool mungeCharName(char* dst, const char* src, int32_t dstCapacity) { - /* Note: we use ' ' in compiler code page */ - int32_t j = 0; - char ch; - --dstCapacity; /* make room for term. zero */ - while ((ch = *src++) != 0) { - if (ch == ' ' && (j==0 || (j>0 && dst[j-1]==' '))) { - continue; - } - if (j >= dstCapacity) return false; - dst[j++] = ch; - } - if (j > 0 && dst[j-1] == ' ') --j; - dst[j] = 0; - return true; -} - } // namespace //---------------------------------------------------------------- @@ -780,7 +1482,7 @@ UBool mungeCharName(char* dst, const char* src, int32_t dstCapacity) { } UPRV_BLOCK_MACRO_END UnicodeSet& -UnicodeSet::applyIntPropertyValue(UProperty prop, int32_t value, UErrorCode& ec) { +UnicodeSet::applyIntPropertyValue(UProperty prop, int32_t value, UErrorCode& ec) U_LIFETIME_BOUND { if (U_FAILURE(ec) || isFrozen()) { return *this; } if (prop == UCHAR_GENERAL_CATEGORY_MASK) { const UnicodeSet* inclusions = CharacterProperties::getInclusionsForProperty(prop, ec); @@ -817,7 +1519,7 @@ UnicodeSet::applyIntPropertyValue(UProperty prop, int32_t value, UErrorCode& ec) UnicodeSet& UnicodeSet::applyPropertyAlias(const UnicodeString& prop, const UnicodeString& value, - UErrorCode& ec) { + UErrorCode& ec) U_LIFETIME_BOUND { if (U_FAILURE(ec) || isFrozen()) return *this; // prop and value used to be converted to char * using the default @@ -891,30 +1593,21 @@ UnicodeSet::applyPropertyAlias(const UnicodeString& prop, } case UCHAR_NAME: { - // Must munge name, since u_charFromName() does not do - // 'loose' matching. - char buf[128]; // it suffices that this be > uprv_getMaxCharNameLength - if (!mungeCharName(buf, vname.data(), sizeof(buf))) FAIL(ec); - UChar32 ch = u_charFromName(U_EXTENDED_CHAR_NAME, buf, &ec); - if (U_SUCCESS(ec)) { - clear(); - add(ch); - return *this; - } else { + const UChar32 ch = getCharacterByName(vname); + if (ch < 0) { FAIL(ec); } + clear(); + add(ch); + return *this; } case UCHAR_UNICODE_1_NAME: // ICU 49 deprecates the Unicode_1_Name property APIs. FAIL(ec); case UCHAR_AGE: { - // Must munge name, since u_versionFromString() does not do - // 'loose' matching. - char buf[128]; - if (!mungeCharName(buf, vname.data(), sizeof(buf))) FAIL(ec); UVersionInfo version; - u_versionFromString(version, buf); + u_versionFromString(version, vname.data()); applyFilter(versionFilter, &version, CharacterProperties::getInclusionsForProperty(p, ec), ec); return *this; @@ -1002,156 +1695,4 @@ UBool UnicodeSet::resemblesPropertyPattern(const UnicodeString& pattern, return isPOSIXOpen(pattern, pos) || isPerlOpen(pattern, pos) || isNameOpen(pattern, pos); } -/** - * Return true if the given iterator appears to point at a - * property pattern. Regardless of the result, return with the - * iterator unchanged. - * @param chars iterator over the pattern characters. Upon return - * it will be unchanged. - * @param iterOpts RuleCharacterIterator options - */ -UBool UnicodeSet::resemblesPropertyPattern(RuleCharacterIterator& chars, - int32_t iterOpts) { - // NOTE: literal will always be false, because we don't parse escapes. - UBool result = false, literal; - UErrorCode ec = U_ZERO_ERROR; - iterOpts &= ~RuleCharacterIterator::PARSE_ESCAPES; - RuleCharacterIterator::Pos pos; - chars.getPos(pos); - UChar32 c = chars.next(iterOpts, literal, ec); - if (c == u'[' || c == u'\\') { - UChar32 d = chars.next(iterOpts & ~RuleCharacterIterator::SKIP_WHITESPACE, - literal, ec); - result = (c == u'[') ? (d == u':') : - (d == u'N' || d == u'p' || d == u'P'); - } - chars.setPos(pos); - return result && U_SUCCESS(ec); -} - -/** - * Parse the given property pattern at the given parse position. - */ -UnicodeSet& UnicodeSet::applyPropertyPattern(const UnicodeString& pattern, - ParsePosition& ppos, - UErrorCode &ec) { - int32_t pos = ppos.getIndex(); - - UBool posix = false; // true for [:pat:], false for \p{pat} \P{pat} \N{pat} - UBool isName = false; // true for \N{pat}, o/w false - UBool invert = false; - - if (U_FAILURE(ec)) return *this; - - // Minimum length is 5 characters, e.g. \p{L} - if ((pos+5) > pattern.length()) { - FAIL(ec); - } - - // On entry, ppos should point to one of the following locations: - // Look for an opening [:, [:^, \p, or \P - if (isPOSIXOpen(pattern, pos)) { - posix = true; - pos += 2; - pos = ICU_Utility::skipWhitespace(pattern, pos); - if (pos < pattern.length() && pattern.charAt(pos) == u'^') { - ++pos; - invert = true; - } - } else if (isPerlOpen(pattern, pos) || isNameOpen(pattern, pos)) { - char16_t c = pattern.charAt(pos+1); - invert = (c == u'P'); - isName = (c == u'N'); - pos += 2; - pos = ICU_Utility::skipWhitespace(pattern, pos); - if (pos == pattern.length() || pattern.charAt(pos++) != u'{') { - // Syntax error; "\p" or "\P" not followed by "{" - FAIL(ec); - } - } else { - // Open delimiter not seen - FAIL(ec); - } - - // Look for the matching close delimiter, either :] or } - int32_t close; - if (posix) { - close = pattern.indexOf(u":]", 2, pos); - } else { - close = pattern.indexOf(u'}', pos); - } - if (close < 0) { - // Syntax error; close delimiter missing - FAIL(ec); - } - - // Look for an '=' sign. If this is present, we will parse a - // medium \p{gc=Cf} or long \p{GeneralCategory=Format} - // pattern. - int32_t equals = pattern.indexOf(u'=', pos); - UnicodeString propName, valueName; - if (equals >= 0 && equals < close && !isName) { - // Equals seen; parse medium/long pattern - pattern.extractBetween(pos, equals, propName); - pattern.extractBetween(equals+1, close, valueName); - } - - else { - // Handle case where no '=' is seen, and \N{} - pattern.extractBetween(pos, close, propName); - - // Handle \N{name} - if (isName) { - // This is a little inefficient since it means we have to - // parse NAME_PROP back to UCHAR_NAME even though we already - // know it's UCHAR_NAME. If we refactor the API to - // support args of (UProperty, char*) then we can remove - // NAME_PROP and make this a little more efficient. - valueName = propName; - propName = NAME_PROP; - } - } - - applyPropertyAlias(propName, valueName, ec); - - if (U_SUCCESS(ec)) { - if (invert) { - complement().removeAllStrings(); // code point complement - } - - // Move to the limit position after the close delimiter if the - // parse succeeded. - ppos.setIndex(close + (posix ? 2 : 1)); - } - - return *this; -} - -/** - * Parse a property pattern. - * @param chars iterator over the pattern characters. Upon return - * it will be advanced to the first character after the parsed - * pattern, or the end of the iteration if all characters are - * parsed. - * @param rebuiltPat the pattern that was parsed, rebuilt or - * copied from the input pattern, as appropriate. - */ -void UnicodeSet::applyPropertyPattern(RuleCharacterIterator& chars, - UnicodeString& rebuiltPat, - UErrorCode& ec) { - if (U_FAILURE(ec)) return; - UnicodeString pattern; - chars.lookahead(pattern); - ParsePosition pos(0); - applyPropertyPattern(pattern, pos, ec); - if (U_FAILURE(ec)) return; - if (pos.getIndex() == 0) { - // syntaxError(chars, "Invalid property pattern"); - ec = U_MALFORMED_SET; - return; - } - chars.jumpahead(pos.getIndex()); - rebuiltPat.append(pattern, 0, pos.getIndex()); -} - U_NAMESPACE_END diff --git a/deps/icu-small/source/common/unistr.cpp b/deps/icu-small/source/common/unistr.cpp index 4e29bad1d3b9..dbd6c9cd7894 100644 --- a/deps/icu-small/source/common/unistr.cpp +++ b/deps/icu-small/source/common/unistr.cpp @@ -237,7 +237,7 @@ UnicodeString::UnicodeString(const char16_t *text, } UnicodeString::UnicodeString(UBool isTerminated, - ConstChar16Ptr textPtr, + ConstChar16Ptr textPtr U_LIFETIME_BOUND, int32_t textLength) { fUnion.fFields.fLengthAndFlags = kReadonlyAlias; const char16_t *text = textPtr; @@ -259,7 +259,7 @@ UnicodeString::UnicodeString(UBool isTerminated, } } -UnicodeString::UnicodeString(char16_t *buff, +UnicodeString::UnicodeString(char16_t* buff U_LIFETIME_BOUND, int32_t buffLength, int32_t buffCapacity) { fUnion.fFields.fLengthAndFlags = kWritableAlias; @@ -298,7 +298,8 @@ UnicodeString::UnicodeString(const char *src, int32_t length, EInvariant) { } } -UnicodeString UnicodeString::readOnlyAliasFromU16StringView(std::u16string_view text) { +UnicodeString +UnicodeString::readOnlyAliasFromU16StringView(std::u16string_view text U_LIFETIME_BOUND) { UnicodeString result; if (text.length() <= INT32_MAX) { result.setTo(false, text.data(), static_cast(text.length())); @@ -308,7 +309,8 @@ UnicodeString UnicodeString::readOnlyAliasFromU16StringView(std::u16string_view return result; } -UnicodeString UnicodeString::readOnlyAliasFromUnicodeString(const UnicodeString &text) { +UnicodeString +UnicodeString::readOnlyAliasFromUnicodeString(const UnicodeString& text U_LIFETIME_BOUND) { UnicodeString result; if (text.isBogus()) { result.setToBogus(); @@ -523,18 +525,18 @@ UnicodeString UnicodeString::fromUTF32(const UChar32 *utf32, int32_t length) { // Assignment //======================================== -UnicodeString & -UnicodeString::operator=(const UnicodeString &src) { +UnicodeString& +UnicodeString::operator=(const UnicodeString& src) U_LIFETIME_BOUND { return copyFrom(src); } -UnicodeString & -UnicodeString::fastCopyFrom(const UnicodeString &src) { +UnicodeString& +UnicodeString::fastCopyFrom(const UnicodeString& src) U_LIFETIME_BOUND { return copyFrom(src, true); } -UnicodeString & -UnicodeString::copyFrom(const UnicodeString &src, UBool fastCopy) { +UnicodeString& +UnicodeString::copyFrom(const UnicodeString& src, UBool fastCopy) U_LIFETIME_BOUND { // if assigning to ourselves, do nothing if(this == &src) { return *this; @@ -611,7 +613,7 @@ UnicodeString::copyFrom(const UnicodeString &src, UBool fastCopy) { return *this; } -UnicodeString &UnicodeString::operator=(UnicodeString &&src) noexcept { +UnicodeString& UnicodeString::operator=(UnicodeString&& src) noexcept U_LIFETIME_BOUND { // No explicit check for self move assignment, consistent with standard library. // Self move assignment causes no crash nor leak but might make the object bogus. releaseArray(); @@ -995,7 +997,7 @@ UnicodeString::extract(int32_t start, } UnicodeString -UnicodeString::tempSubString(int32_t start, int32_t len) const { +UnicodeString::tempSubString(int32_t start, int32_t len) const U_LIFETIME_BOUND { pinIndices(start, len); const char16_t *array = getBuffer(); // not getArrayStart() to check kIsBogus & kOpenGetBuffer if(array==nullptr) { @@ -1239,15 +1241,15 @@ UnicodeString::doLastIndexOf(UChar32 c, // Write implementation //======================================== -UnicodeString& +UnicodeString& UnicodeString::findAndReplace(int32_t start, - int32_t length, - const UnicodeString& oldText, - int32_t oldStart, - int32_t oldLength, - const UnicodeString& newText, - int32_t newStart, - int32_t newLength) + int32_t length, + const UnicodeString& oldText, + int32_t oldStart, + int32_t oldLength, + const UnicodeString& newText, + int32_t newStart, + int32_t newLength) U_LIFETIME_BOUND { if(isBogus() || oldText.isBogus() || newText.isBogus()) { return *this; @@ -1296,8 +1298,8 @@ UnicodeString::unBogus() { } } -const char16_t * -UnicodeString::getTerminatedBuffer() { +const char16_t* +UnicodeString::getTerminatedBuffer() U_LIFETIME_BOUND { if(!isWritable()) { return nullptr; } @@ -1335,10 +1337,10 @@ UnicodeString::getTerminatedBuffer() { } // setTo() analogous to the readonly-aliasing constructor with the same signature -UnicodeString & +UnicodeString& UnicodeString::setTo(UBool isTerminated, - ConstChar16Ptr textPtr, - int32_t textLength) + ConstChar16Ptr textPtr U_LIFETIME_BOUND, + int32_t textLength) U_LIFETIME_BOUND { if(fUnion.fFields.fLengthAndFlags & kOpenGetBuffer) { // do not modify a string that has an "open" getBuffer(minCapacity) @@ -1373,10 +1375,10 @@ UnicodeString::setTo(UBool isTerminated, } // setTo() analogous to the writable-aliasing constructor with the same signature -UnicodeString & -UnicodeString::setTo(char16_t *buffer, - int32_t buffLength, - int32_t buffCapacity) { +UnicodeString& +UnicodeString::setTo(char16_t* buffer, + int32_t buffLength U_LIFETIME_BOUND, + int32_t buffCapacity) U_LIFETIME_BOUND { if(fUnion.fFields.fLengthAndFlags & kOpenGetBuffer) { // do not modify a string that has an "open" getBuffer(minCapacity) return *this; @@ -1408,7 +1410,7 @@ UnicodeString::setTo(char16_t *buffer, return *this; } -UnicodeString &UnicodeString::setToUTF8(StringPiece utf8) { +UnicodeString& UnicodeString::setToUTF8(StringPiece utf8) U_LIFETIME_BOUND { unBogus(); int32_t length = utf8.length(); int32_t capacity; @@ -1434,8 +1436,7 @@ UnicodeString &UnicodeString::setToUTF8(StringPiece utf8) { } UnicodeString& -UnicodeString::setCharAt(int32_t offset, - char16_t c) +UnicodeString::setCharAt(int32_t offset, char16_t c) U_LIFETIME_BOUND { int32_t len = length(); if(cloneArrayIfNeeded() && len > 0) { @@ -1452,8 +1453,8 @@ UnicodeString::setCharAt(int32_t offset, UnicodeString& UnicodeString::replace(int32_t start, - int32_t _length, - UChar32 srcChar) { + int32_t _length, + UChar32 srcChar) U_LIFETIME_BOUND { char16_t buffer[U16_MAX_LENGTH]; int32_t count = 0; UBool isError = false; @@ -1465,7 +1466,7 @@ UnicodeString::replace(int32_t start, } UnicodeString& -UnicodeString::append(UChar32 srcChar) { +UnicodeString::append(UChar32 srcChar) U_LIFETIME_BOUND { char16_t buffer[U16_MAX_LENGTH]; int32_t _length = 0; UBool isError = false; @@ -1476,11 +1477,11 @@ UnicodeString::append(UChar32 srcChar) { } UnicodeString& -UnicodeString::doReplace( int32_t start, - int32_t length, - const UnicodeString& src, - int32_t srcStart, - int32_t srcLength) +UnicodeString::doReplace(int32_t start, + int32_t length, + const UnicodeString& src, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND { // pin the indices to legal values src.pinIndices(srcStart, srcLength); @@ -1492,10 +1493,10 @@ UnicodeString::doReplace( int32_t start, UnicodeString& UnicodeString::doReplace(int32_t start, - int32_t length, - const char16_t *srcChars, - int32_t srcStart, - int32_t srcLength) + int32_t length, + const char16_t* srcChars, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND { if(!isWritable()) { return *this; @@ -1614,7 +1615,7 @@ UnicodeString::doReplace(int32_t start, } UnicodeString& -UnicodeString::doReplace(int32_t start, int32_t length, std::u16string_view src) { +UnicodeString::doReplace(int32_t start, int32_t length, std::u16string_view src) U_LIFETIME_BOUND { if (!isWritable()) { return *this; } @@ -1629,7 +1630,9 @@ UnicodeString::doReplace(int32_t start, int32_t length, std::u16string_view src) // doReplace() and doAppend() optimize for different cases. UnicodeString& -UnicodeString::doAppend(const UnicodeString& src, int32_t srcStart, int32_t srcLength) { +UnicodeString::doAppend(const UnicodeString& src, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND { if(srcLength == 0) { return *this; } @@ -1640,7 +1643,9 @@ UnicodeString::doAppend(const UnicodeString& src, int32_t srcStart, int32_t srcL } UnicodeString& -UnicodeString::doAppend(const char16_t *srcChars, int32_t srcStart, int32_t srcLength) { +UnicodeString::doAppend(const char16_t* srcChars, + int32_t srcStart, + int32_t srcLength) U_LIFETIME_BOUND { if(!isWritable() || srcLength == 0 || srcChars == nullptr) { return *this; } @@ -1714,7 +1719,7 @@ UnicodeString::doAppend(const char16_t *srcChars, int32_t srcStart, int32_t srcL } UnicodeString& -UnicodeString::doAppend(std::u16string_view src) { +UnicodeString::doAppend(std::u16string_view src) U_LIFETIME_BOUND { if (!isWritable() || src.empty()) { return *this; } @@ -1770,7 +1775,7 @@ UBool UnicodeString::hasMetaData() const { } UnicodeString& -UnicodeString::doReverse(int32_t start, int32_t length) { +UnicodeString::doReverse(int32_t start, int32_t length) U_LIFETIME_BOUND { if(length <= 1 || !cloneArrayIfNeeded()) { return *this; } @@ -1875,8 +1880,8 @@ UnicodeString::doHashCode() const // External Buffer //======================================== -char16_t * -UnicodeString::getBuffer(int32_t minCapacity) { +char16_t* +UnicodeString::getBuffer(int32_t minCapacity) U_LIFETIME_BOUND { if(minCapacity>=-1 && cloneArrayIfNeeded(minCapacity)) { fUnion.fFields.fLengthAndFlags|=kOpenGetBuffer; setZeroLength(); @@ -2053,11 +2058,11 @@ UnicodeStringAppendable::reserveAppendCapacity(int32_t appendCapacity) { return str.cloneArrayIfNeeded(str.length() + appendCapacity); } -char16_t * -UnicodeStringAppendable::getAppendBuffer(int32_t minCapacity, - int32_t desiredCapacityHint, - char16_t *scratch, int32_t scratchCapacity, - int32_t *resultCapacity) { +char16_t* UnicodeStringAppendable::getAppendBuffer(int32_t minCapacity, + int32_t desiredCapacityHint, + char16_t* scratch U_LIFETIME_BOUND, + int32_t scratchCapacity, + int32_t* resultCapacity) U_LIFETIME_BOUND { if(minCapacity < 1 || scratchCapacity < minCapacity) { *resultCapacity = 0; return nullptr; diff --git a/deps/icu-small/source/common/unistr_case.cpp b/deps/icu-small/source/common/unistr_case.cpp index 40ea6b2f4d6e..f66d44e06f23 100644 --- a/deps/icu-small/source/common/unistr_case.cpp +++ b/deps/icu-small/source/common/unistr_case.cpp @@ -90,9 +90,11 @@ UnicodeString::doCaseCompare(int32_t start, // Write implementation //======================================== -UnicodeString & -UnicodeString::caseMap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM - UStringCaseMapper *stringCaseMapper) { +UnicodeString& +UnicodeString::caseMap( + int32_t caseLocale, + uint32_t options, + UCASEMAP_BREAK_ITERATOR_PARAM UStringCaseMapper* stringCaseMapper) U_LIFETIME_BOUND { if(isEmpty() || !isWritable()) { // nothing to do return *this; @@ -213,8 +215,8 @@ UnicodeString::caseMap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITER return *this; } -UnicodeString & -UnicodeString::foldCase(uint32_t options) { +UnicodeString& +UnicodeString::foldCase(uint32_t options) U_LIFETIME_BOUND { return caseMap(UCASE_LOC_ROOT, options, UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalFold); } diff --git a/deps/icu-small/source/common/unistr_case_locale.cpp b/deps/icu-small/source/common/unistr_case_locale.cpp index 8b6a9ca0ca51..76bd183fa468 100644 --- a/deps/icu-small/source/common/unistr_case_locale.cpp +++ b/deps/icu-small/source/common/unistr_case_locale.cpp @@ -29,26 +29,26 @@ U_NAMESPACE_BEGIN // Write implementation //======================================== -UnicodeString & -UnicodeString::toLower() { +UnicodeString& +UnicodeString::toLower() U_LIFETIME_BOUND { return caseMap(ustrcase_getCaseLocale(nullptr), 0, UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToLower); } -UnicodeString & -UnicodeString::toLower(const Locale &locale) { +UnicodeString& +UnicodeString::toLower(const Locale& locale) U_LIFETIME_BOUND { return caseMap(ustrcase_getCaseLocale(locale.getBaseName()), 0, UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToLower); } -UnicodeString & -UnicodeString::toUpper() { +UnicodeString& +UnicodeString::toUpper() U_LIFETIME_BOUND { return caseMap(ustrcase_getCaseLocale(nullptr), 0, UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToUpper); } -UnicodeString & -UnicodeString::toUpper(const Locale &locale) { +UnicodeString& +UnicodeString::toUpper(const Locale& locale) U_LIFETIME_BOUND { return caseMap(ustrcase_getCaseLocale(locale.getBaseName()), 0, UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToUpper); } diff --git a/deps/icu-small/source/common/unistr_props.cpp b/deps/icu-small/source/common/unistr_props.cpp index e5bbb5386409..0d621fd49d58 100644 --- a/deps/icu-small/source/common/unistr_props.cpp +++ b/deps/icu-small/source/common/unistr_props.cpp @@ -26,7 +26,7 @@ U_NAMESPACE_BEGIN UnicodeString& -UnicodeString::trim() +UnicodeString::trim() U_LIFETIME_BOUND { if(isBogus()) { return *this; diff --git a/deps/icu-small/source/common/unistr_titlecase_brkiter.cpp b/deps/icu-small/source/common/unistr_titlecase_brkiter.cpp index 4969884b0dc9..3ba61565b090 100644 --- a/deps/icu-small/source/common/unistr_titlecase_brkiter.cpp +++ b/deps/icu-small/source/common/unistr_titlecase_brkiter.cpp @@ -29,18 +29,20 @@ U_NAMESPACE_BEGIN -UnicodeString & -UnicodeString::toTitle(BreakIterator *iter) { +UnicodeString& +UnicodeString::toTitle(BreakIterator* iter) U_LIFETIME_BOUND { return toTitle(iter, Locale::getDefault(), 0); } -UnicodeString & -UnicodeString::toTitle(BreakIterator *iter, const Locale &locale) { +UnicodeString& +UnicodeString::toTitle(BreakIterator* iter, const Locale& locale) U_LIFETIME_BOUND { return toTitle(iter, locale, 0); } -UnicodeString & -UnicodeString::toTitle(BreakIterator *iter, const Locale &locale, uint32_t options) { +UnicodeString& +UnicodeString::toTitle(BreakIterator* iter, + const Locale& locale, + uint32_t options) U_LIFETIME_BOUND { LocalPointer ownedIter; UErrorCode errorCode = U_ZERO_ERROR; iter = ustrcase_getTitleBreakIterator(&locale, "", options, iter, ownedIter, errorCode); diff --git a/deps/icu-small/source/common/uprops.cpp b/deps/icu-small/source/common/uprops.cpp index 817a1fac0c01..15ce47bd39e5 100644 --- a/deps/icu-small/source/common/uprops.cpp +++ b/deps/icu-small/source/common/uprops.cpp @@ -359,7 +359,7 @@ static constexpr UChar32 ID_COMPAT_MATH_START[] = { 0x1D7C3 }; -/** Ranges (start/limit pairs) of Modifier_Combining_mark (only), from UCD PropList.txt. */ +/** Ranges (start/limit pairs) of Modifier_Combining_Mark (only), from UCD PropList.txt. */ static constexpr UChar32 MODIFIER_COMBINING_MARK[] = { 0x0654, 0x0655 + 1, 0x0658, 0x0658 + 1, // U+0658 @@ -369,7 +369,10 @@ static constexpr UChar32 MODIFIER_COMBINING_MARK[] = { 0x08CA, 0x08CB + 1, 0x08CD, 0x08CF + 1, 0x08D3, 0x08D3 + 1, // U+08D3 - 0x08F3, 0x08F3 + 1 // U+08F3 + 0x08F3, 0x08F3 + 1, // U+08F3 + 0x10EF4, 0x10EF4 + 1, + 0x10EF6, 0x10EF6 + 1, + 0x10EF9, 0x10EF9 + 1, }; static UBool isIDCompatMathStart(const BinaryProperty &/*prop*/, UChar32 c, UProperty /*which*/) { diff --git a/deps/icu-small/source/common/uresbund.cpp b/deps/icu-small/source/common/uresbund.cpp index afda2770fd3f..dfac21604675 100644 --- a/deps/icu-small/source/common/uresbund.cpp +++ b/deps/icu-small/source/common/uresbund.cpp @@ -113,7 +113,7 @@ static UBool hasVariant(const char* localeID) { static const char* performFallbackLookup(const char* key, const char* keyStrs, - const char* valueStrs, + const char* valueStrs U_LIFETIME_BOUND, const int32_t* lookupTable, int32_t lookupTableLength) { const int32_t* bottom = lookupTable; @@ -1150,20 +1150,29 @@ ures_close(UResourceBundle* resB) namespace { -UResourceBundle *init_resb_result( - UResourceDataEntry *dataEntry, Resource r, const char *key, int32_t idx, - UResourceDataEntry *validLocaleDataEntry, const char *containerResPath, - int32_t recursionDepth, - UResourceBundle *resB, UErrorCode *status); +UResourceBundle* init_resb_result(UResourceDataEntry* dataEntry, + Resource r, + const char* key, + int32_t idx, + UResourceDataEntry* validLocaleDataEntry, + const char* containerResPath, + int32_t recursionDepth, + UResourceBundle* resB U_LIFETIME_BOUND, + UErrorCode* status); // TODO: Try to refactor further, so that we output a dataEntry + Resource + (optionally) resPath, // rather than a UResourceBundle. // May need to entryIncrease() the resulting dataEntry. -UResourceBundle *getAliasTargetAsResourceBundle( - const ResourceData &resData, Resource r, const char *key, int32_t idx, - UResourceDataEntry *validLocaleDataEntry, const char *containerResPath, - int32_t recursionDepth, - UResourceBundle *resB, UErrorCode *status) { +UResourceBundle* +getAliasTargetAsResourceBundle(const ResourceData& resData, + Resource r, + const char* key, + int32_t idx, + UResourceDataEntry* validLocaleDataEntry, + const char* containerResPath, + int32_t recursionDepth, + UResourceBundle* resB U_LIFETIME_BOUND, + UErrorCode* status) { // TODO: When an error occurs: Should we return nullptr vs. resB? if (U_FAILURE(*status)) { return resB; } U_ASSERT(RES_GET_TYPE(r) == URES_ALIAS); @@ -1382,11 +1391,15 @@ UResourceBundle *getAliasTargetAsResourceBundle( // Recursive function, should be called only by itself, by its simpler wrapper, // or by getAliasTargetAsResourceBundle(). -UResourceBundle *init_resb_result( - UResourceDataEntry *dataEntry, Resource r, const char *key, int32_t idx, - UResourceDataEntry *validLocaleDataEntry, const char *containerResPath, - int32_t recursionDepth, - UResourceBundle *resB, UErrorCode *status) { +UResourceBundle* init_resb_result(UResourceDataEntry* dataEntry, + Resource r, + const char* key, + int32_t idx, + UResourceDataEntry* validLocaleDataEntry, + const char* containerResPath, + int32_t recursionDepth, + UResourceBundle* resB U_LIFETIME_BOUND, + UErrorCode* status) { // TODO: When an error occurs: Should we return nullptr vs. resB? if(status == nullptr || U_FAILURE(*status)) { return resB; @@ -1449,14 +1462,14 @@ UResourceBundle *init_resb_result( } if(key != nullptr) { ures_appendResPath(resB, key, static_cast(uprv_strlen(key)), status); - if(resB->fResPath[resB->fResPathLen-1] != RES_PATH_SEPARATOR) { + if(resB->fResPathLen > 0 && resB->fResPath[resB->fResPathLen-1] != RES_PATH_SEPARATOR) { ures_appendResPath(resB, RES_PATH_SEPARATOR_S, 1, status); } } else if(idx >= 0) { char buf[256]; int32_t len = T_CString_integerToString(buf, idx, 10); ures_appendResPath(resB, buf, len, status); - if(resB->fResPath[resB->fResPathLen-1] != RES_PATH_SEPARATOR) { + if(resB->fResPathLen > 0 && resB->fResPath[resB->fResPathLen-1] != RES_PATH_SEPARATOR) { ures_appendResPath(resB, RES_PATH_SEPARATOR_S, 1, status); } } @@ -1473,11 +1486,14 @@ UResourceBundle *init_resb_result( return resB; } -UResourceBundle *init_resb_result( - UResourceDataEntry *dataEntry, Resource r, const char *key, int32_t idx, - // validLocaleDataEntry + containerResPath - const UResourceBundle *container, - UResourceBundle *resB, UErrorCode *status) { +UResourceBundle* init_resb_result(UResourceDataEntry* dataEntry, + Resource r, + const char* key, + int32_t idx, + // validLocaleDataEntry + containerResPath + const UResourceBundle* container, + UResourceBundle* resB U_LIFETIME_BOUND, + UErrorCode* status) { return init_resb_result( dataEntry, r, key, idx, container->fValidLocaleDataEntry, container->fResPath, 0, resB, status); @@ -1485,7 +1501,9 @@ UResourceBundle *init_resb_result( } // namespace -UResourceBundle *ures_copyResb(UResourceBundle *r, const UResourceBundle *original, UErrorCode *status) { +UResourceBundle* ures_copyResb(UResourceBundle* r U_LIFETIME_BOUND, + const UResourceBundle* original, + UErrorCode* status) { UBool isStackObject; if(U_FAILURE(*status) || r == original) { return r; @@ -1521,7 +1539,9 @@ UResourceBundle *ures_copyResb(UResourceBundle *r, const UResourceBundle *origin * Functions to retrieve data from resource bundles. */ -U_CAPI const char16_t* U_EXPORT2 ures_getString(const UResourceBundle* resB, int32_t* len, UErrorCode* status) { +U_CAPI const char16_t* U_EXPORT2 ures_getString(const UResourceBundle* resB U_LIFETIME_BOUND, + int32_t* len, + UErrorCode* status) { const char16_t *s; if (status==nullptr || U_FAILURE(*status)) { return nullptr; @@ -1537,11 +1557,13 @@ U_CAPI const char16_t* U_EXPORT2 ures_getString(const UResourceBundle* resB, int return s; } -static const char * -ures_toUTF8String(const char16_t *s16, int32_t length16, - char *dest, int32_t *pLength, +static const char* +ures_toUTF8String(const char16_t* s16, + int32_t length16, + char* dest U_LIFETIME_BOUND, + int32_t* pLength, UBool forceCopy, - UErrorCode *status) { + UErrorCode* status) { int32_t capacity; if (U_FAILURE(*status)) { @@ -1599,18 +1621,19 @@ ures_toUTF8String(const char16_t *s16, int32_t length16, } } -U_CAPI const char * U_EXPORT2 -ures_getUTF8String(const UResourceBundle *resB, - char *dest, int32_t *pLength, +U_CAPI const char* U_EXPORT2 +ures_getUTF8String(const UResourceBundle* resB, + char* dest U_LIFETIME_BOUND, + int32_t* pLength, UBool forceCopy, - UErrorCode *status) { + UErrorCode* status) { int32_t length16; const char16_t *s16 = ures_getString(resB, &length16, status); return ures_toUTF8String(s16, length16, dest, pLength, forceCopy, status); } -U_CAPI const uint8_t* U_EXPORT2 ures_getBinary(const UResourceBundle* resB, int32_t* len, - UErrorCode* status) { +U_CAPI const uint8_t* U_EXPORT2 +ures_getBinary(const UResourceBundle* resB U_LIFETIME_BOUND, int32_t* len, UErrorCode* status) { const uint8_t *p; if (status==nullptr || U_FAILURE(*status)) { return nullptr; @@ -1626,8 +1649,8 @@ U_CAPI const uint8_t* U_EXPORT2 ures_getBinary(const UResourceBundle* resB, int3 return p; } -U_CAPI const int32_t* U_EXPORT2 ures_getIntVector(const UResourceBundle* resB, int32_t* len, - UErrorCode* status) { +U_CAPI const int32_t* U_EXPORT2 +ures_getIntVector(const UResourceBundle* resB U_LIFETIME_BOUND, int32_t* len, UErrorCode* status) { const int32_t *p; if (status==nullptr || U_FAILURE(*status)) { return nullptr; @@ -1682,7 +1705,8 @@ U_CAPI UResType U_EXPORT2 ures_getType(const UResourceBundle *resB) { return res_getPublicType(resB->fRes); } -U_CAPI const char * U_EXPORT2 ures_getKey(const UResourceBundle *resB) { +U_CAPI const char* U_EXPORT2 +ures_getKey(const UResourceBundle* resB U_LIFETIME_BOUND) { // // TODO: Trace ures_getKey? I guess not usually. // @@ -1706,7 +1730,12 @@ U_CAPI int32_t U_EXPORT2 ures_getSize(const UResourceBundle *resB) { return resB->fSize; } -static const char16_t* ures_getStringWithAlias(const UResourceBundle *resB, Resource r, int32_t sIndex, int32_t *len, UErrorCode *status) { +static const char16_t* +ures_getStringWithAlias(const UResourceBundle* resB U_LIFETIME_BOUND, + Resource r, + int32_t sIndex, + int32_t* len, + UErrorCode* status) { if(RES_GET_TYPE(r) == URES_ALIAS) { const char16_t* result = nullptr; UResourceBundle *tempRes = ures_getByIndex(resB, sIndex, nullptr, status); @@ -1732,7 +1761,11 @@ U_CAPI UBool U_EXPORT2 ures_hasNext(const UResourceBundle *resB) { return resB->fIndex < resB->fSize-1; } -U_CAPI const char16_t* U_EXPORT2 ures_getNextString(UResourceBundle *resB, int32_t* len, const char ** key, UErrorCode *status) { +U_CAPI const char16_t* U_EXPORT2 +ures_getNextString(UResourceBundle* resB U_LIFETIME_BOUND, + int32_t* len, + const char** key, + UErrorCode* status) { Resource r = RES_BOGUS; if (status==nullptr || U_FAILURE(*status)) { @@ -1781,7 +1814,10 @@ U_CAPI const char16_t* U_EXPORT2 ures_getNextString(UResourceBundle *resB, int32 return nullptr; } -U_CAPI UResourceBundle* U_EXPORT2 ures_getNextResource(UResourceBundle *resB, UResourceBundle *fillIn, UErrorCode *status) { +U_CAPI UResourceBundle* U_EXPORT2 +ures_getNextResource(UResourceBundle* resB, + UResourceBundle* fillIn U_LIFETIME_BOUND, + UErrorCode* status) { const char *key = nullptr; Resource r = RES_BOGUS; @@ -1831,7 +1867,11 @@ U_CAPI UResourceBundle* U_EXPORT2 ures_getNextResource(UResourceBundle *resB, UR return fillIn; } -U_CAPI UResourceBundle* U_EXPORT2 ures_getByIndex(const UResourceBundle *resB, int32_t indexR, UResourceBundle *fillIn, UErrorCode *status) { +U_CAPI UResourceBundle* U_EXPORT2 +ures_getByIndex(const UResourceBundle* resB, + int32_t indexR, + UResourceBundle* fillIn U_LIFETIME_BOUND, + UErrorCode* status) { const char* key = nullptr; Resource r = RES_BOGUS; @@ -1879,7 +1919,11 @@ U_CAPI UResourceBundle* U_EXPORT2 ures_getByIndex(const UResourceBundle *resB, i return fillIn; } -U_CAPI const char16_t* U_EXPORT2 ures_getStringByIndex(const UResourceBundle *resB, int32_t indexS, int32_t* len, UErrorCode *status) { +U_CAPI const char16_t* U_EXPORT2 +ures_getStringByIndex(const UResourceBundle* resB U_LIFETIME_BOUND, + int32_t indexS, + int32_t* len, + UErrorCode* status) { const char* key = nullptr; Resource r = RES_BOGUS; @@ -1929,12 +1973,13 @@ U_CAPI const char16_t* U_EXPORT2 ures_getStringByIndex(const UResourceBundle *re return nullptr; } -U_CAPI const char * U_EXPORT2 -ures_getUTF8StringByIndex(const UResourceBundle *resB, +U_CAPI const char* U_EXPORT2 +ures_getUTF8StringByIndex(const UResourceBundle* resB, int32_t idx, - char *dest, int32_t *pLength, + char* dest U_LIFETIME_BOUND, + int32_t* pLength, UBool forceCopy, - UErrorCode *status) { + UErrorCode* status) { int32_t length16; const char16_t *s16 = ures_getStringByIndex(resB, idx, &length16, status); return ures_toUTF8String(s16, length16, dest, pLength, forceCopy, status); @@ -1945,7 +1990,7 @@ ures_getUTF8StringByIndex(const UResourceBundle *resB, }*/ U_CAPI UResourceBundle* U_EXPORT2 -ures_findResource(const char* path, UResourceBundle *fillIn, UErrorCode *status) +ures_findResource(const char* path, UResourceBundle* fillIn U_LIFETIME_BOUND, UErrorCode* status) { UResourceBundle *first = nullptr; UResourceBundle *result = fillIn; @@ -2000,7 +2045,10 @@ ures_findResource(const char* path, UResourceBundle *fillIn, UErrorCode *status) } U_CAPI UResourceBundle* U_EXPORT2 -ures_findSubResource(const UResourceBundle *resB, char* path, UResourceBundle *fillIn, UErrorCode *status) +ures_findSubResource(const UResourceBundle* resB, + char* path, + UResourceBundle* fillIn U_LIFETIME_BOUND, + UErrorCode* status) { Resource res = RES_BOGUS; UResourceBundle *result = fillIn; @@ -2026,12 +2074,12 @@ ures_findSubResource(const UResourceBundle *resB, char* path, UResourceBundle *f return result; } + U_CAPI const char16_t* U_EXPORT2 -ures_getStringByKeyWithFallback(const UResourceBundle *resB, - const char* inKey, +ures_getStringByKeyWithFallback(const UResourceBundle* resB U_LIFETIME_BOUND, + const char* inKey, int32_t* len, - UErrorCode *status) { - + UErrorCode* status) { UResourceBundle stack; const char16_t* retVal = nullptr; ures_initStackObject(&stack); @@ -2158,10 +2206,10 @@ static void createPath(const char* origResPath, } U_CAPI UResourceBundle* U_EXPORT2 -ures_getByKeyWithFallback(const UResourceBundle *resB, +ures_getByKeyWithFallback(const UResourceBundle* resB, const char* inKey, - UResourceBundle *fillIn, - UErrorCode *status) { + UResourceBundle* fillIn U_LIFETIME_BOUND, + UErrorCode* status) { Resource res = RES_BOGUS, rootRes = RES_BOGUS; UResourceBundle *helper = nullptr; @@ -2490,7 +2538,11 @@ ures_getAllItemsWithFallback(const UResourceBundle *bundle, const char *path, getAllItemsWithFallback(rb, value, sink, errorCode); } -U_CAPI UResourceBundle* U_EXPORT2 ures_getByKey(const UResourceBundle *resB, const char* inKey, UResourceBundle *fillIn, UErrorCode *status) { +U_CAPI UResourceBundle* U_EXPORT2 +ures_getByKey(const UResourceBundle* resB, + const char* inKey, + UResourceBundle* fillIn U_LIFETIME_BOUND, + UErrorCode* status) { Resource res = RES_BOGUS; UResourceDataEntry *dataEntry = nullptr; const char *key = inKey; @@ -2543,7 +2595,11 @@ U_CAPI UResourceBundle* U_EXPORT2 ures_getByKey(const UResourceBundle *resB, con return fillIn; } -U_CAPI const char16_t* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, const char* inKey, int32_t* len, UErrorCode *status) { +U_CAPI const char16_t* U_EXPORT2 +ures_getStringByKey(const UResourceBundle* resB U_LIFETIME_BOUND, + const char* inKey, + int32_t* len, + UErrorCode* status) { Resource res = RES_BOGUS; UResourceDataEntry *dataEntry = nullptr; const char* key = inKey; @@ -2626,12 +2682,13 @@ U_CAPI const char16_t* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB return nullptr; } -U_CAPI const char * U_EXPORT2 -ures_getUTF8StringByKey(const UResourceBundle *resB, - const char *key, - char *dest, int32_t *pLength, +U_CAPI const char* U_EXPORT2 +ures_getUTF8StringByKey(const UResourceBundle* resB, + const char* key, + char* dest U_LIFETIME_BOUND, + int32_t* pLength, UBool forceCopy, - UErrorCode *status) { + UErrorCode* status) { int32_t length16; const char16_t *s16 = ures_getStringByKey(resB, key, &length16, status); return ures_toUTF8String(s16, length16, dest, pLength, forceCopy, status); @@ -2643,8 +2700,8 @@ ures_getUTF8StringByKey(const UResourceBundle *resB, * INTERNAL: Get the name of the first real locale (not placeholder) * that has resource bundle data. */ -U_CAPI const char* U_EXPORT2 -ures_getLocaleInternal(const UResourceBundle* resourceBundle, UErrorCode* status) +U_CAPI const char* U_EXPORT2 +ures_getLocaleInternal(const UResourceBundle* resourceBundle U_LIFETIME_BOUND, UErrorCode* status) { if (status==nullptr || U_FAILURE(*status)) { return nullptr; @@ -2657,17 +2714,15 @@ ures_getLocaleInternal(const UResourceBundle* resourceBundle, UErrorCode* status } } -U_CAPI const char* U_EXPORT2 -ures_getLocale(const UResourceBundle* resourceBundle, - UErrorCode* status) +U_CAPI const char* U_EXPORT2 +ures_getLocale(const UResourceBundle* resourceBundle U_LIFETIME_BOUND, UErrorCode* status) { return ures_getLocaleInternal(resourceBundle, status); } - -U_CAPI const char* U_EXPORT2 -ures_getLocaleByType(const UResourceBundle* resourceBundle, - ULocDataLocaleType type, +U_CAPI const char* U_EXPORT2 +ures_getLocaleByType(const UResourceBundle* resourceBundle U_LIFETIME_BOUND, + ULocDataLocaleType type, UErrorCode* status) { if (status==nullptr || U_FAILURE(*status)) { return nullptr; @@ -2689,7 +2744,8 @@ ures_getLocaleByType(const UResourceBundle* resourceBundle, } } -U_CFUNC const char* ures_getName(const UResourceBundle* resB) { +U_CFUNC const char* +ures_getName(const UResourceBundle* resB U_LIFETIME_BOUND) { if(resB == nullptr) { return nullptr; } @@ -2698,7 +2754,8 @@ U_CFUNC const char* ures_getName(const UResourceBundle* resB) { } #ifdef URES_DEBUG -U_CFUNC const char* ures_getPath(const UResourceBundle* resB) { +U_CFUNC const char* +ures_getPath(const UResourceBundle* resB U_LIFETIME_BOUND) { if(resB == nullptr) { return nullptr; } @@ -2708,8 +2765,11 @@ U_CFUNC const char* ures_getPath(const UResourceBundle* resB) { #endif static UResourceBundle* -ures_openWithType(UResourceBundle *r, const char* path, const char* localeID, - UResOpenType openType, UErrorCode* status) { +ures_openWithType(UResourceBundle* r U_LIFETIME_BOUND, + const char* path, + const char* localeID, + UResOpenType openType, + UErrorCode* status) { if(U_FAILURE(*status)) { return nullptr; } @@ -2854,8 +2914,8 @@ ures_countArrayItems(const UResourceBundle* resourceBundle, * @see ures_getVersion * @internal */ -U_CAPI const char* U_EXPORT2 -ures_getVersionNumberInternal(const UResourceBundle *resourceBundle) +U_CAPI const char* U_EXPORT2 +ures_getVersionNumberInternal(const UResourceBundle* resourceBundle U_LIFETIME_BOUND) { if (!resourceBundle) return nullptr; @@ -2898,8 +2958,8 @@ ures_getVersionNumberInternal(const UResourceBundle *resourceBundle) return resourceBundle->fVersion; } -U_CAPI const char* U_EXPORT2 -ures_getVersionNumber(const UResourceBundle* resourceBundle) +U_CAPI const char* U_EXPORT2 +ures_getVersionNumber(const UResourceBundle* resourceBundle U_LIFETIME_BOUND) { return ures_getVersionNumberInternal(resourceBundle); } diff --git a/deps/icu-small/source/common/uresimp.h b/deps/icu-small/source/common/uresimp.h index 2685b2d2dc92..865574b9bd0b 100644 --- a/deps/icu-small/source/common/uresimp.h +++ b/deps/icu-small/source/common/uresimp.h @@ -125,10 +125,10 @@ class U_COMMON_API StackUResourceBundle { StackUResourceBundle(); ~StackUResourceBundle(); - UResourceBundle* getAlias() { return &bundle; } + UResourceBundle* getAlias() U_LIFETIME_BOUND { return &bundle; } - UResourceBundle& ref() { return bundle; } - const UResourceBundle& ref() const { return bundle; } + UResourceBundle& ref() U_LIFETIME_BOUND { return bundle; } + const UResourceBundle& ref() const U_LIFETIME_BOUND { return bundle; } StackUResourceBundle(const StackUResourceBundle&) = delete; StackUResourceBundle& operator=(const StackUResourceBundle&) = delete; @@ -156,9 +156,9 @@ U_CAPI UResourceBundle* U_EXPORT2 ures_openNoDefault(const char* path, const char* localeID, UErrorCode* status); /* Some getters used by the copy constructor */ -U_CFUNC const char* ures_getName(const UResourceBundle* resB); +U_CFUNC const char* ures_getName(const UResourceBundle* resB U_LIFETIME_BOUND); #ifdef URES_DEBUG -U_CFUNC const char* ures_getPath(const UResourceBundle* resB); +U_CFUNC const char* ures_getPath(const UResourceBundle* resB U_LIFETIME_BOUND); /** * If anything was in the RB cache, dump it to the screen. * @return true if there was anything into the cache @@ -167,7 +167,10 @@ U_CAPI UBool U_EXPORT2 ures_dumpCacheContents(void); #endif /* Candidates for export */ -U_CFUNC UResourceBundle *ures_copyResb(UResourceBundle *r, const UResourceBundle *original, UErrorCode *status); +U_CFUNC UResourceBundle* +ures_copyResb(UResourceBundle* r U_LIFETIME_BOUND, + const UResourceBundle* original, + UErrorCode* status); /** * Returns a resource that can be located using the pathToResource argument. One needs optional package, locale @@ -185,8 +188,9 @@ U_CFUNC UResourceBundle *ures_copyResb(UResourceBundle *r, const UResourceBundle * @return a pointer to a UResourceBundle struct. If fill in param was NULL, caller must delete it */ U_CAPI UResourceBundle* U_EXPORT2 -ures_findResource(const char* pathToResource, - UResourceBundle *fillIn, UErrorCode *status); +ures_findResource(const char* pathToResource, + UResourceBundle* fillIn U_LIFETIME_BOUND, + UErrorCode* status); /** * Returns a sub resource that can be located using the pathToResource argument. One needs a path inside @@ -204,9 +208,10 @@ ures_findResource(const char* pathToResource, * @return a pointer to a UResourceBundle struct. If fill in param was NULL, caller must delete it */ U_CAPI UResourceBundle* U_EXPORT2 -ures_findSubResource(const UResourceBundle *resB, - char* pathToResource, - UResourceBundle *fillIn, UErrorCode *status); +ures_findSubResource(const UResourceBundle* resB, + char* pathToResource, + UResourceBundle* fillIn U_LIFETIME_BOUND, + UErrorCode* status); /** * Returns a functionally equivalent locale (considering keywords) for the specified keyword. @@ -256,11 +261,11 @@ ures_getKeywordValues(const char *path, const char *keyword, UErrorCode *status) * e.g.: U_USING_FALLBACK_WARNING,U_USING_DEFAULT_WARNING * @return a pointer to a UResourceBundle struct. If fill in param was NULL, caller must delete it */ -U_CAPI UResourceBundle* U_EXPORT2 -ures_getByKeyWithFallback(const UResourceBundle *resB, - const char* inKey, - UResourceBundle *fillIn, - UErrorCode *status); +U_CAPI UResourceBundle* U_EXPORT2 +ures_getByKeyWithFallback(const UResourceBundle* resB, + const char* inKey, + UResourceBundle* fillIn U_LIFETIME_BOUND, + UErrorCode* status); /** * Get a String with multi-level fallback. Normally only the top level resources will @@ -278,11 +283,11 @@ ures_getByKeyWithFallback(const UResourceBundle *resB, * @return returns a pointer to a zero-terminated UChar array which lives in a * memory mapped/DLL file. */ -U_CAPI const UChar* U_EXPORT2 -ures_getStringByKeyWithFallback(const UResourceBundle *resB, - const char* inKey, - int32_t* len, - UErrorCode *status); +U_CAPI const UChar* U_EXPORT2 +ures_getStringByKeyWithFallback(const UResourceBundle* resB U_LIFETIME_BOUND, + const char* inKey, + int32_t* len, + UErrorCode* status); #ifdef __cplusplus @@ -349,8 +354,8 @@ ures_getVersionByKey(const UResourceBundle *resB, * The caller does not own this string. * @see ures_getVersion */ -U_CAPI const char* U_EXPORT2 -ures_getVersionNumberInternal(const UResourceBundle *resourceBundle); +U_CAPI const char* U_EXPORT2 +ures_getVersionNumberInternal(const UResourceBundle* resourceBundle U_LIFETIME_BOUND); /** * Return the name of the Locale associated with this ResourceBundle. This API allows @@ -365,9 +370,8 @@ ures_getVersionNumberInternal(const UResourceBundle *resourceBundle); * @param status just for catching illegal arguments * @return A Locale name */ -U_CAPI const char* U_EXPORT2 -ures_getLocaleInternal(const UResourceBundle* resourceBundle, - UErrorCode* status); +U_CAPI const char* U_EXPORT2 +ures_getLocaleInternal(const UResourceBundle* resourceBundle U_LIFETIME_BOUND, UErrorCode* status); /** * Same as ures_openDirect() but uses the fill-in parameter instead of allocating a new bundle. diff --git a/deps/icu-small/source/common/uscript_props.cpp b/deps/icu-small/source/common/uscript_props.cpp index 232ce89755cd..e4393bce0848 100644 --- a/deps/icu-small/source/common/uscript_props.cpp +++ b/deps/icu-small/source/common/uscript_props.cpp @@ -192,7 +192,7 @@ const int32_t SCRIPT_PROPS[] = { 0x112BE | EXCLUSION, // Sind 0x118B4 | EXCLUSION | CASED, // Wara 0, - 0, + 0x18F1A | EXCLUSION | LB_LETTERS, // Jurc 0x16A4F | EXCLUSION, // Mroo 0x1B1C4 | EXCLUSION | LB_LETTERS, // Nshu 0x11183 | EXCLUSION, // Shrd @@ -256,6 +256,9 @@ const int32_t SCRIPT_PROPS[] = { 0x10950 | EXCLUSION | RTL, // Sidt 0x1E6D5 | EXCLUSION | LB_LETTERS, // Tayo 0x11DC6 | EXCLUSION, // Tols + 0, + 0x125AD | EXCLUSION, // Pcun + 0x3EA10 | EXCLUSION | LB_LETTERS, // Seal // End copy-paste from parsescriptmetadata.py }; diff --git a/deps/icu-small/source/common/uset.cpp b/deps/icu-small/source/common/uset.cpp index 29b8655ac965..06ebead1e5f4 100644 --- a/deps/icu-small/source/common/uset.cpp +++ b/deps/icu-small/source/common/uset.cpp @@ -292,7 +292,7 @@ class USetAccess /* not : public UObject because all methods are static */ { inline static int32_t getStringCount(const UnicodeSet& set) { return set.stringsSize(); } - inline static const UnicodeString* getString(const UnicodeSet& set, + inline static const UnicodeString* getString(const UnicodeSet& set U_LIFETIME_BOUND, int32_t i) { return set.getString(i); } @@ -320,7 +320,7 @@ uset_getItemCount(const USet* uset) { } U_CAPI const UChar* U_EXPORT2 -uset_getString(const USet *uset, int32_t index, int32_t *pLength) { +uset_getString(const USet* uset U_LIFETIME_BOUND, int32_t index, int32_t* pLength) { if (pLength == nullptr) { return nullptr; } const UnicodeSet &set = *(const UnicodeSet *)uset; int32_t count = USetAccess::getStringCount(set); diff --git a/deps/icu-small/source/common/usetiter.cpp b/deps/icu-small/source/common/usetiter.cpp index a79d1a26f100..781d3a7d889c 100644 --- a/deps/icu-small/source/common/usetiter.cpp +++ b/deps/icu-small/source/common/usetiter.cpp @@ -19,7 +19,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(UnicodeSetIterator) * Create an iterator * @param set set to iterate over */ -UnicodeSetIterator::UnicodeSetIterator(const UnicodeSet& uSet) { +UnicodeSetIterator::UnicodeSetIterator(const UnicodeSet& uSet U_LIFETIME_BOUND) { cpString = nullptr; reset(uSet); } @@ -134,7 +134,7 @@ void UnicodeSetIterator::loadRange(int32_t iRange) { } -const UnicodeString& UnicodeSetIterator::getString() { +const UnicodeString& UnicodeSetIterator::getString() U_LIFETIME_BOUND { if (string == nullptr && codepoint != static_cast(IS_STRING)) { if (cpString == nullptr) { cpString = new UnicodeString(); diff --git a/deps/icu-small/source/common/ushape.cpp b/deps/icu-small/source/common/ushape.cpp index b7946dc3ce03..a50b814846e0 100644 --- a/deps/icu-small/source/common/ushape.cpp +++ b/deps/icu-small/source/common/ushape.cpp @@ -982,7 +982,7 @@ expandCompositCharAtEnd(char16_t *dest, int32_t sourceLength, int32_t destSize,U uprv_memset(tempbuffer, 0, (sourceLength+1)*U_SIZEOF_UCHAR); - while(dest[inpsize-1] == SPACE_CHAR) { + while(inpsize>0 && dest[inpsize-1] == SPACE_CHAR) { countr++; inpsize--; } @@ -1525,6 +1525,11 @@ u_shapeArabic(const char16_t *source, int32_t sourceLength, prevLink = currLink; currLink = getLink(source[i]); if (aggregate_tashkeel && ((prevLink|currLink)&COMBINE) == COMBINE && aggregation_possible) { + if (j<0 || j>=2*sourceLength) { + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + if (tempsource != nullptr) uprv_free(tempsource); + return 0; + } aggregation_possible = 0; tempsource[j] = (prev &ownedIter, UErrorCode &errorCode) { +BreakIterator* ustrcase_getTitleBreakIterator(const Locale* locale, + const char* locID, + uint32_t options, + BreakIterator* iter U_LIFETIME_BOUND, + LocalPointer& ownedIter, + UErrorCode& errorCode) { if (U_FAILURE(errorCode)) { return nullptr; } options &= U_TITLECASE_ITERATOR_MASK; if (options != 0 && iter != nullptr) { @@ -216,19 +221,20 @@ ucasemap_toTitle(UCaseMap *csm, if (U_FAILURE(*pErrorCode)) { return 0; } - if (csm->iter == nullptr) { + auto *impl = reinterpret_cast(csm); + if (impl->iter == nullptr) { LocalPointer ownedIter; BreakIterator *iter = ustrcase_getTitleBreakIterator( - nullptr, csm->locale, csm->options, nullptr, ownedIter, *pErrorCode); + nullptr, impl->locale, impl->options, nullptr, ownedIter, *pErrorCode); if (iter == nullptr) { return 0; } - csm->iter = ownedIter.orphan(); + impl->iter = ownedIter.orphan(); } UnicodeString s(srcLength<0, src, srcLength); - csm->iter->setText(s); + impl->iter->setText(s); return ustrcase_map( - csm->caseLocale, csm->options, csm->iter, + impl->caseLocale, impl->options, impl->iter, dest, destCapacity, src, srcLength, ustrcase_internalToTitle, nullptr, *pErrorCode); diff --git a/deps/icu-small/source/common/ustr_wcs.cpp b/deps/icu-small/source/common/ustr_wcs.cpp index 395713f5cd93..87e31dc3f84d 100644 --- a/deps/icu-small/source/common/ustr_wcs.cpp +++ b/deps/icu-small/source/common/ustr_wcs.cpp @@ -227,12 +227,12 @@ _strToWCS(wchar_t *dest, #endif U_CAPI wchar_t* U_EXPORT2 -u_strToWCS(wchar_t *dest, +u_strToWCS(wchar_t* dest U_LIFETIME_BOUND, int32_t destCapacity, - int32_t *pDestLength, - const char16_t *src, + int32_t* pDestLength, + const char16_t* src, int32_t srcLength, - UErrorCode *pErrorCode){ + UErrorCode* pErrorCode) { /* args check */ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)){ @@ -483,12 +483,12 @@ _strFromWCS( char16_t *dest, #endif U_CAPI char16_t* U_EXPORT2 -u_strFromWCS(char16_t *dest, - int32_t destCapacity, - int32_t *pDestLength, - const wchar_t *src, +u_strFromWCS(char16_t* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const wchar_t* src, int32_t srcLength, - UErrorCode *pErrorCode) + UErrorCode* pErrorCode) { /* args check */ diff --git a/deps/icu-small/source/common/ustrenum.cpp b/deps/icu-small/source/common/ustrenum.cpp index c42014d617d7..86088010d67d 100644 --- a/deps/icu-small/source/common/ustrenum.cpp +++ b/deps/icu-small/source/common/ustrenum.cpp @@ -40,8 +40,8 @@ StringEnumeration::clone() const { return nullptr; } -const char * -StringEnumeration::next(int32_t *resultLength, UErrorCode &status) { +const char* +StringEnumeration::next(int32_t* resultLength, UErrorCode& status) U_LIFETIME_BOUND { const UnicodeString *s=snext(status); if(U_SUCCESS(status) && s!=nullptr) { unistr=*s; @@ -58,8 +58,8 @@ StringEnumeration::next(int32_t *resultLength, UErrorCode &status) { return nullptr; } -const char16_t * -StringEnumeration::unext(int32_t *resultLength, UErrorCode &status) { +const char16_t* +StringEnumeration::unext(int32_t* resultLength, UErrorCode& status) U_LIFETIME_BOUND { const UnicodeString *s=snext(status); if(U_SUCCESS(status) && s!=nullptr) { unistr=*s; @@ -72,8 +72,8 @@ StringEnumeration::unext(int32_t *resultLength, UErrorCode &status) { return nullptr; } -const UnicodeString * -StringEnumeration::snext(UErrorCode &status) { +const UnicodeString* +StringEnumeration::snext(UErrorCode& status) U_LIFETIME_BOUND { int32_t length; const char *s=next(&length, status); return setChars(s, length, status); @@ -100,8 +100,8 @@ StringEnumeration::ensureCharsCapacity(int32_t capacity, UErrorCode &status) { } } -UnicodeString * -StringEnumeration::setChars(const char *s, int32_t length, UErrorCode &status) { +UnicodeString* +StringEnumeration::setChars(const char* s, int32_t length, UErrorCode& status) U_LIFETIME_BOUND { if(U_SUCCESS(status) && s!=nullptr) { if(length<0) { length = static_cast(uprv_strlen(s)); @@ -161,11 +161,11 @@ int32_t UStringEnumeration::count(UErrorCode& status) const { return uenum_count(uenum, &status); } -const char *UStringEnumeration::next(int32_t *resultLength, UErrorCode &status) { +const char* UStringEnumeration::next(int32_t* resultLength, UErrorCode& status) U_LIFETIME_BOUND { return uenum_next(uenum, resultLength, &status); } -const UnicodeString* UStringEnumeration::snext(UErrorCode& status) { +const UnicodeString* UStringEnumeration::snext(UErrorCode& status) U_LIFETIME_BOUND { int32_t length; const char16_t* str = uenum_unext(uenum, &length, &status); if (str == nullptr || U_FAILURE(status)) { @@ -210,7 +210,7 @@ ustrenum_count(UEnumeration* en, * Wrapper API to make StringEnumeration look like UEnumeration. */ static const char16_t* U_CALLCONV -ustrenum_unext(UEnumeration* en, +ustrenum_unext(UEnumeration* en U_LIFETIME_BOUND, int32_t* resultLength, UErrorCode* ec) { @@ -221,7 +221,7 @@ ustrenum_unext(UEnumeration* en, * Wrapper API to make StringEnumeration look like UEnumeration. */ static const char* U_CALLCONV -ustrenum_next(UEnumeration* en, +ustrenum_next(UEnumeration* en U_LIFETIME_BOUND, int32_t* resultLength, UErrorCode* ec) { @@ -298,7 +298,7 @@ ucharstrenum_count(UEnumeration* en, } static const char16_t* U_CALLCONV -ucharstrenum_unext(UEnumeration* en, +ucharstrenum_unext(UEnumeration* en U_LIFETIME_BOUND, int32_t* resultLength, UErrorCode* /*ec*/) { UCharStringEnumeration *e = (UCharStringEnumeration*) en; @@ -314,7 +314,7 @@ ucharstrenum_unext(UEnumeration* en, static const char* U_CALLCONV -ucharstrenum_next(UEnumeration* en, +ucharstrenum_next(UEnumeration* en U_LIFETIME_BOUND, int32_t* resultLength, UErrorCode* /*ec*/) { UCharStringEnumeration *e = (UCharStringEnumeration*) en; @@ -357,7 +357,8 @@ static const UEnumeration UCHARSTRENUM_U_VT = { U_CDECL_END U_CAPI UEnumeration* U_EXPORT2 -uenum_openCharStringsEnumeration(const char* const strings[], int32_t count, +uenum_openCharStringsEnumeration(U_LIFETIME_BOUND const char* const strings[], + int32_t count, UErrorCode* ec) { UCharStringEnumeration* result = nullptr; if (U_SUCCESS(*ec) && count >= 0 && (count == 0 || strings != nullptr)) { @@ -376,8 +377,9 @@ uenum_openCharStringsEnumeration(const char* const strings[], int32_t count, } U_CAPI UEnumeration* U_EXPORT2 -uenum_openUCharStringsEnumeration(const char16_t* const strings[], int32_t count, - UErrorCode* ec) { +uenum_openUCharStringsEnumeration(U_LIFETIME_BOUND const char16_t* const strings[], + int32_t count, + UErrorCode* ec) { UCharStringEnumeration* result = nullptr; if (U_SUCCESS(*ec) && count >= 0 && (count == 0 || strings != nullptr)) { result = (UCharStringEnumeration*) uprv_malloc(sizeof(UCharStringEnumeration)); diff --git a/deps/icu-small/source/common/ustrenum.h b/deps/icu-small/source/common/ustrenum.h index ff546ca0a1b7..5ad1cc11de39 100644 --- a/deps/icu-small/source/common/ustrenum.h +++ b/deps/icu-small/source/common/ustrenum.h @@ -49,7 +49,7 @@ class U_COMMON_API UStringEnumeration : public StringEnumeration { */ virtual int32_t count(UErrorCode& status) const override; - virtual const char* next(int32_t *resultLength, UErrorCode& status) override; + virtual const char* next(int32_t* resultLength, UErrorCode& status) U_LIFETIME_BOUND override; /** * Returns the next element a UnicodeString*. If there are no @@ -57,7 +57,7 @@ class U_COMMON_API UStringEnumeration : public StringEnumeration { * @param status the error code. * @return a pointer to the string, or nullptr. */ - virtual const UnicodeString* snext(UErrorCode& status) override; + virtual const UnicodeString* snext(UErrorCode& status) U_LIFETIME_BOUND override; /** * Resets the iterator. diff --git a/deps/icu-small/source/common/ustring.cpp b/deps/icu-small/source/common/ustring.cpp index 8375121e2f45..d9365bdc75be 100644 --- a/deps/icu-small/source/common/ustring.cpp +++ b/deps/icu-small/source/common/ustring.cpp @@ -52,9 +52,11 @@ isMatchAtCPBoundary(const char16_t *start, const char16_t *match, const char16_t return true; } -U_CAPI char16_t * U_EXPORT2 -u_strFindFirst(const char16_t *s, int32_t length, - const char16_t *sub, int32_t subLength) { +U_CAPI char16_t* U_EXPORT2 +u_strFindFirst(const char16_t* s U_LIFETIME_BOUND, + int32_t length, + const char16_t* sub, + int32_t subLength) { const char16_t *start, *p, *q, *subLimit; char16_t c, cs, cq; @@ -190,13 +192,13 @@ u_strFindFirst(const char16_t *s, int32_t length, return nullptr; } -U_CAPI char16_t * U_EXPORT2 -u_strstr(const char16_t *s, const char16_t *substring) { +U_CAPI char16_t* U_EXPORT2 +u_strstr(const char16_t* s U_LIFETIME_BOUND, const char16_t* substring) { return u_strFindFirst(s, -1, substring, -1); } -U_CAPI char16_t * U_EXPORT2 -u_strchr(const char16_t *s, char16_t c) { +U_CAPI char16_t* U_EXPORT2 +u_strchr(const char16_t* s U_LIFETIME_BOUND, char16_t c) { if(U16_IS_SURROGATE(c)) { /* make sure to not find half of a surrogate pair */ return u_strFindFirst(s, -1, &c, 1); @@ -216,8 +218,8 @@ u_strchr(const char16_t *s, char16_t c) { } } -U_CAPI char16_t * U_EXPORT2 -u_strchr32(const char16_t *s, UChar32 c) { +U_CAPI char16_t* U_EXPORT2 +u_strchr32(const char16_t* s U_LIFETIME_BOUND, UChar32 c) { if((uint32_t)c<=U_BMP_MAX) { /* find BMP code point */ return u_strchr(s, (char16_t)c); @@ -237,8 +239,8 @@ u_strchr32(const char16_t *s, UChar32 c) { } } -U_CAPI char16_t * U_EXPORT2 -u_memchr(const char16_t *s, char16_t c, int32_t count) { +U_CAPI char16_t* U_EXPORT2 +u_memchr(const char16_t* s U_LIFETIME_BOUND, char16_t c, int32_t count) { if(count<=0) { return nullptr; /* no string */ } else if(U16_IS_SURROGATE(c)) { @@ -256,8 +258,8 @@ u_memchr(const char16_t *s, char16_t c, int32_t count) { } } -U_CAPI char16_t * U_EXPORT2 -u_memchr32(const char16_t *s, UChar32 c, int32_t count) { +U_CAPI char16_t* U_EXPORT2 +u_memchr32(const char16_t* s U_LIFETIME_BOUND, UChar32 c, int32_t count) { if((uint32_t)c<=U_BMP_MAX) { /* find BMP code point */ return u_memchr(s, (char16_t)c, count); @@ -283,9 +285,11 @@ u_memchr32(const char16_t *s, UChar32 c, int32_t count) { /* Backward binary string search functions ---------------------------------- */ -U_CAPI char16_t * U_EXPORT2 -u_strFindLast(const char16_t *s, int32_t length, - const char16_t *sub, int32_t subLength) { +U_CAPI char16_t* U_EXPORT2 +u_strFindLast(const char16_t* s U_LIFETIME_BOUND, + int32_t length, + const char16_t* sub, + int32_t subLength) { const char16_t *start, *limit, *p, *q, *subLimit; char16_t c, cs; @@ -363,13 +367,13 @@ u_strFindLast(const char16_t *s, int32_t length, return nullptr; } -U_CAPI char16_t * U_EXPORT2 -u_strrstr(const char16_t *s, const char16_t *substring) { +U_CAPI char16_t* U_EXPORT2 +u_strrstr(const char16_t* s U_LIFETIME_BOUND, const char16_t* substring) { return u_strFindLast(s, -1, substring, -1); } -U_CAPI char16_t * U_EXPORT2 -u_strrchr(const char16_t *s, char16_t c) { +U_CAPI char16_t* U_EXPORT2 +u_strrchr(const char16_t* s U_LIFETIME_BOUND, char16_t c) { if(U16_IS_SURROGATE(c)) { /* make sure to not find half of a surrogate pair */ return u_strFindLast(s, -1, &c, 1); @@ -390,8 +394,8 @@ u_strrchr(const char16_t *s, char16_t c) { } } -U_CAPI char16_t * U_EXPORT2 -u_strrchr32(const char16_t *s, UChar32 c) { +U_CAPI char16_t* U_EXPORT2 +u_strrchr32(const char16_t* s U_LIFETIME_BOUND, UChar32 c) { if((uint32_t)c<=U_BMP_MAX) { /* find BMP code point */ return u_strrchr(s, (char16_t)c); @@ -412,8 +416,8 @@ u_strrchr32(const char16_t *s, UChar32 c) { } } -U_CAPI char16_t * U_EXPORT2 -u_memrchr(const char16_t *s, char16_t c, int32_t count) { +U_CAPI char16_t* U_EXPORT2 +u_memrchr(const char16_t* s U_LIFETIME_BOUND, char16_t c, int32_t count) { if(count<=0) { return nullptr; /* no string */ } else if(U16_IS_SURROGATE(c)) { @@ -431,8 +435,8 @@ u_memrchr(const char16_t *s, char16_t c, int32_t count) { } } -U_CAPI char16_t * U_EXPORT2 -u_memrchr32(const char16_t *s, UChar32 c, int32_t count) { +U_CAPI char16_t* U_EXPORT2 +u_memrchr32(const char16_t* s U_LIFETIME_BOUND, UChar32 c, int32_t count) { if((uint32_t)c<=U_BMP_MAX) { /* find BMP code point */ return u_memrchr(s, (char16_t)c, count); @@ -537,8 +541,8 @@ _matchFromSet(const char16_t *string, const char16_t *matchSet, UBool polarity) } /* Search for a codepoint in a string that matches one of the matchSet codepoints. */ -U_CAPI char16_t * U_EXPORT2 -u_strpbrk(const char16_t *string, const char16_t *matchSet) +U_CAPI char16_t* U_EXPORT2 +u_strpbrk(const char16_t* string U_LIFETIME_BOUND, const char16_t* matchSet) { int32_t idx = _matchFromSet(string, matchSet, true); if(idx >= 0) { @@ -575,9 +579,7 @@ u_strspn(const char16_t *string, const char16_t *matchSet) /* ----- Text manipulation functions --- */ U_CAPI char16_t* U_EXPORT2 -u_strtok_r(char16_t *src, - const char16_t *delim, - char16_t **saveState) +u_strtok_r(char16_t* src U_LIFETIME_BOUND, const char16_t* delim, char16_t** saveState) { char16_t *tokSource; char16_t *nextToken; @@ -625,8 +627,7 @@ u_strtok_r(char16_t *src, /* Miscellaneous functions -------------------------------------------------- */ U_CAPI char16_t* U_EXPORT2 -u_strcat(char16_t *dst, - const char16_t *src) +u_strcat(char16_t* dst U_LIFETIME_BOUND, const char16_t* src) { char16_t *anchor = dst; /* save a pointer to start of dst */ @@ -639,10 +640,8 @@ u_strcat(char16_t *dst, return anchor; } -U_CAPI char16_t* U_EXPORT2 -u_strncat(char16_t *dst, - const char16_t *src, - int32_t n ) +U_CAPI char16_t* U_EXPORT2 +u_strncat(char16_t* dst U_LIFETIME_BOUND, const char16_t* src, int32_t n) { if(n > 0) { char16_t *anchor = dst; /* save a pointer to start of dst */ @@ -964,8 +963,7 @@ u_strncmpCodePointOrder(const char16_t *s1, const char16_t *s2, int32_t n) { } U_CAPI char16_t* U_EXPORT2 -u_strcpy(char16_t *dst, - const char16_t *src) +u_strcpy(char16_t* dst U_LIFETIME_BOUND, const char16_t* src) { char16_t *anchor = dst; /* save a pointer to start of dst */ @@ -975,11 +973,8 @@ u_strcpy(char16_t *dst, return anchor; } -U_CAPI char16_t* U_EXPORT2 -u_strncpy(char16_t *dst, - const char16_t *src, - int32_t n) -{ +U_CAPI char16_t* U_EXPORT2 +u_strncpy(char16_t* dst U_LIFETIME_BOUND, const char16_t* src, int32_t n) { char16_t *anchor = dst; /* save a pointer to start of dst */ /* copy string 2 over */ @@ -1113,24 +1108,24 @@ u_strHasMoreChar32Than(const char16_t *s, int32_t length, int32_t number) { } } -U_CAPI char16_t * U_EXPORT2 -u_memcpy(char16_t *dest, const char16_t *src, int32_t count) { +U_CAPI char16_t* U_EXPORT2 +u_memcpy(char16_t* dest U_LIFETIME_BOUND, const char16_t* src, int32_t count) { if(count > 0) { uprv_memcpy(dest, src, (size_t)count*U_SIZEOF_UCHAR); } return dest; } -U_CAPI char16_t * U_EXPORT2 -u_memmove(char16_t *dest, const char16_t *src, int32_t count) { +U_CAPI char16_t* U_EXPORT2 +u_memmove(char16_t* dest U_LIFETIME_BOUND, const char16_t* src, int32_t count) { if(count > 0) { uprv_memmove(dest, src, (size_t)count*U_SIZEOF_UCHAR); } return dest; } -U_CAPI char16_t * U_EXPORT2 -u_memset(char16_t *dest, char16_t c, int32_t count) { +U_CAPI char16_t* U_EXPORT2 +u_memset(char16_t* dest U_LIFETIME_BOUND, char16_t c, int32_t count) { if(count > 0) { char16_t *ptr = dest; char16_t *limit = dest + count; diff --git a/deps/icu-small/source/common/ustrtrns.cpp b/deps/icu-small/source/common/ustrtrns.cpp index d16eabe99fd0..d457ca58b5d8 100644 --- a/deps/icu-small/source/common/ustrtrns.cpp +++ b/deps/icu-small/source/common/ustrtrns.cpp @@ -37,13 +37,14 @@ #include "uassert.h" U_CAPI char16_t* U_EXPORT2 -u_strFromUTF32WithSub(char16_t *dest, - int32_t destCapacity, - int32_t *pDestLength, - const UChar32 *src, - int32_t srcLength, - UChar32 subchar, int32_t *pNumSubstitutions, - UErrorCode *pErrorCode) { +u_strFromUTF32WithSub(char16_t* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const UChar32* src, + int32_t srcLength, + UChar32 subchar, + int32_t* pNumSubstitutions, + UErrorCode* pErrorCode) { const UChar32 *srcLimit; UChar32 ch; char16_t *destLimit; @@ -137,12 +138,12 @@ u_strFromUTF32WithSub(char16_t *dest, } U_CAPI char16_t* U_EXPORT2 -u_strFromUTF32(char16_t *dest, - int32_t destCapacity, - int32_t *pDestLength, - const UChar32 *src, +u_strFromUTF32(char16_t* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const UChar32* src, int32_t srcLength, - UErrorCode *pErrorCode) { + UErrorCode* pErrorCode) { return u_strFromUTF32WithSub( dest, destCapacity, pDestLength, src, srcLength, @@ -150,14 +151,15 @@ u_strFromUTF32(char16_t *dest, pErrorCode); } -U_CAPI UChar32* U_EXPORT2 -u_strToUTF32WithSub(UChar32 *dest, - int32_t destCapacity, - int32_t *pDestLength, - const char16_t *src, - int32_t srcLength, - UChar32 subchar, int32_t *pNumSubstitutions, - UErrorCode *pErrorCode) { +U_CAPI UChar32* U_EXPORT2 +u_strToUTF32WithSub(UChar32* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const char16_t* src, + int32_t srcLength, + UChar32 subchar, + int32_t* pNumSubstitutions, + UErrorCode* pErrorCode) { const char16_t *srcLimit; UChar32 ch; char16_t ch2; @@ -242,13 +244,13 @@ u_strToUTF32WithSub(UChar32 *dest, return dest; } -U_CAPI UChar32* U_EXPORT2 -u_strToUTF32(UChar32 *dest, +U_CAPI UChar32* U_EXPORT2 +u_strToUTF32(UChar32* dest U_LIFETIME_BOUND, int32_t destCapacity, - int32_t *pDestLength, - const char16_t *src, + int32_t* pDestLength, + const char16_t* src, int32_t srcLength, - UErrorCode *pErrorCode) { + UErrorCode* pErrorCode) { return u_strToUTF32WithSub( dest, destCapacity, pDestLength, src, srcLength, @@ -257,13 +259,14 @@ u_strToUTF32(UChar32 *dest, } U_CAPI char16_t* U_EXPORT2 -u_strFromUTF8WithSub(char16_t *dest, - int32_t destCapacity, - int32_t *pDestLength, - const char* src, - int32_t srcLength, - UChar32 subchar, int32_t *pNumSubstitutions, - UErrorCode *pErrorCode){ +u_strFromUTF8WithSub(char16_t* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const char* src, + int32_t srcLength, + UChar32 subchar, + int32_t* pNumSubstitutions, + UErrorCode* pErrorCode) { /* args check */ if(U_FAILURE(*pErrorCode)) { return nullptr; @@ -537,12 +540,12 @@ u_strFromUTF8WithSub(char16_t *dest, } U_CAPI char16_t* U_EXPORT2 -u_strFromUTF8(char16_t *dest, +u_strFromUTF8(char16_t* dest U_LIFETIME_BOUND, int32_t destCapacity, - int32_t *pDestLength, + int32_t* pDestLength, const char* src, int32_t srcLength, - UErrorCode *pErrorCode){ + UErrorCode* pErrorCode) { return u_strFromUTF8WithSub( dest, destCapacity, pDestLength, src, srcLength, @@ -550,13 +553,13 @@ u_strFromUTF8(char16_t *dest, pErrorCode); } -U_CAPI char16_t * U_EXPORT2 -u_strFromUTF8Lenient(char16_t *dest, +U_CAPI char16_t* U_EXPORT2 +u_strFromUTF8Lenient(char16_t* dest U_LIFETIME_BOUND, int32_t destCapacity, - int32_t *pDestLength, - const char *src, + int32_t* pDestLength, + const char* src, int32_t srcLength, - UErrorCode *pErrorCode) { + UErrorCode* pErrorCode) { char16_t *pDest = dest; UChar32 ch; int32_t reqLength = 0; @@ -788,15 +791,15 @@ _appendUTF8(uint8_t *pDest, UChar32 c) { return pDest; } - -U_CAPI char* U_EXPORT2 -u_strToUTF8WithSub(char *dest, - int32_t destCapacity, - int32_t *pDestLength, - const char16_t *pSrc, - int32_t srcLength, - UChar32 subchar, int32_t *pNumSubstitutions, - UErrorCode *pErrorCode){ +U_CAPI char* U_EXPORT2 +u_strToUTF8WithSub(char* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const char16_t* pSrc, + int32_t srcLength, + UChar32 subchar, + int32_t* pNumSubstitutions, + UErrorCode* pErrorCode) { int32_t reqLength=0; uint32_t ch=0,ch2=0; uint8_t *pDest = (uint8_t *)dest; @@ -1053,13 +1056,13 @@ u_strToUTF8WithSub(char *dest, return dest; } -U_CAPI char* U_EXPORT2 -u_strToUTF8(char *dest, +U_CAPI char* U_EXPORT2 +u_strToUTF8(char* dest U_LIFETIME_BOUND, int32_t destCapacity, - int32_t *pDestLength, - const char16_t *pSrc, + int32_t* pDestLength, + const char16_t* pSrc, int32_t srcLength, - UErrorCode *pErrorCode){ + UErrorCode* pErrorCode) { return u_strToUTF8WithSub( dest, destCapacity, pDestLength, pSrc, srcLength, @@ -1068,14 +1071,14 @@ u_strToUTF8(char *dest, } U_CAPI char16_t* U_EXPORT2 -u_strFromJavaModifiedUTF8WithSub( - char16_t *dest, - int32_t destCapacity, - int32_t *pDestLength, - const char *src, - int32_t srcLength, - UChar32 subchar, int32_t *pNumSubstitutions, - UErrorCode *pErrorCode) { +u_strFromJavaModifiedUTF8WithSub(char16_t* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const char* src, + int32_t srcLength, + UChar32 subchar, + int32_t* pNumSubstitutions, + UErrorCode* pErrorCode) { /* args check */ if(U_FAILURE(*pErrorCode)) { return nullptr; @@ -1309,14 +1312,13 @@ u_strFromJavaModifiedUTF8WithSub( return dest; } -U_CAPI char* U_EXPORT2 -u_strToJavaModifiedUTF8( - char *dest, - int32_t destCapacity, - int32_t *pDestLength, - const char16_t *src, - int32_t srcLength, - UErrorCode *pErrorCode) { +U_CAPI char* U_EXPORT2 +u_strToJavaModifiedUTF8(char* dest U_LIFETIME_BOUND, + int32_t destCapacity, + int32_t* pDestLength, + const char16_t* src, + int32_t srcLength, + UErrorCode* pErrorCode) { int32_t reqLength=0; uint32_t ch=0; const char16_t *pSrcLimit; diff --git a/deps/icu-small/source/common/utext.cpp b/deps/icu-small/source/common/utext.cpp index 0a4248c4e459..0b8a9f2fb5a8 100644 --- a/deps/icu-small/source/common/utext.cpp +++ b/deps/icu-small/source/common/utext.cpp @@ -519,10 +519,12 @@ utext_copy(UText *ut, ut->pFuncs->copy(ut, nativeStart, nativeLimit, destIndex, move, status); } - - -U_CAPI UText * U_EXPORT2 -utext_clone(UText *dest, const UText *src, UBool deep, UBool readOnly, UErrorCode *status) { +U_CAPI UText* U_EXPORT2 +utext_clone(UText* dest U_LIFETIME_BOUND, + const UText* src, + UBool deep, + UBool readOnly, + UErrorCode* status) { if (U_FAILURE(*status)) { return dest; } @@ -577,8 +579,8 @@ struct ExtendedUText { static const UText emptyText = UTEXT_INITIALIZER; -U_CAPI UText * U_EXPORT2 -utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status) { +U_CAPI UText* U_EXPORT2 +utext_setup(UText* ut U_LIFETIME_BOUND, int32_t extraSpace, UErrorCode* status) { if (U_FAILURE(*status)) { return ut; } @@ -664,8 +666,8 @@ utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status) { } -U_CAPI UText * U_EXPORT2 -utext_close(UText *ut) { +U_CAPI UText* U_EXPORT2 +utext_close(UText* ut U_LIFETIME_BOUND) { if (ut==nullptr || ut->magic != UTEXT_MAGIC || (ut->flags & UTEXT_OPEN) == 0) @@ -1630,8 +1632,11 @@ static const struct UTextFuncs utf8Funcs = static const char gEmptyString[] = {0}; -U_CAPI UText * U_EXPORT2 -utext_openUTF8(UText *ut, const char *s, int64_t length, UErrorCode *status) { +U_CAPI UText* U_EXPORT2 +utext_openUTF8(UText* ut U_LIFETIME_BOUND, + const char* s U_LIFETIME_BOUND, + int64_t length, + UErrorCode* status) { if(U_FAILURE(*status)) { return nullptr; } @@ -2037,9 +2042,10 @@ static const struct UTextFuncs repFuncs = }; -U_CAPI UText * U_EXPORT2 -utext_openReplaceable(UText *ut, Replaceable *rep, UErrorCode *status) -{ +U_CAPI UText* U_EXPORT2 +utext_openReplaceable(UText* ut U_LIFETIME_BOUND, + Replaceable* rep U_LIFETIME_BOUND, + UErrorCode* status) { if(U_FAILURE(*status)) { return nullptr; } @@ -2100,6 +2106,7 @@ unistrTextClone(UText *dest, const UText *src, UBool deep, UErrorCode *status) { if (deep && U_SUCCESS(*status)) { const UnicodeString *srcString = (const UnicodeString *)src->context; dest->context = new UnicodeString(*srcString); + dest->chunkContents = ((const UnicodeString *)dest->context)->getBuffer(); dest->providerProperties |= I32_FLAG(UTEXT_PROVIDER_OWNS_TEXT); // with deep clone, the copy is writable, even when the source is not. @@ -2295,8 +2302,10 @@ static const struct UTextFuncs unistrFuncs = U_CDECL_END -U_CAPI UText * U_EXPORT2 -utext_openUnicodeString(UText *ut, UnicodeString *s, UErrorCode *status) { +U_CAPI UText* U_EXPORT2 +utext_openUnicodeString(UText* ut U_LIFETIME_BOUND, + UnicodeString* s U_LIFETIME_BOUND, + UErrorCode* status) { ut = utext_openConstUnicodeString(ut, s, status); if (U_SUCCESS(*status)) { ut->providerProperties |= I32_FLAG(UTEXT_PROVIDER_WRITABLE); @@ -2306,8 +2315,10 @@ utext_openUnicodeString(UText *ut, UnicodeString *s, UErrorCode *status) { -U_CAPI UText * U_EXPORT2 -utext_openConstUnicodeString(UText *ut, const UnicodeString *s, UErrorCode *status) { +U_CAPI UText* U_EXPORT2 +utext_openConstUnicodeString(UText* ut U_LIFETIME_BOUND, + const UnicodeString* s U_LIFETIME_BOUND, + UErrorCode* status) { if (U_SUCCESS(*status) && s->isBogus()) { // The UnicodeString is bogus, but we still need to detach the UText // from whatever it was hooked to before, if anything. @@ -2373,6 +2384,7 @@ ucstrTextClone(UText *dest, const UText * src, UBool deep, UErrorCode * status) } copyStr[len] = 0; dest->context = copyStr; + dest->chunkContents = copyStr; dest->providerProperties |= I32_FLAG(UTEXT_PROVIDER_OWNS_TEXT); } } @@ -2613,8 +2625,11 @@ U_CDECL_END static const char16_t gEmptyUString[] = {0}; -U_CAPI UText * U_EXPORT2 -utext_openUChars(UText *ut, const char16_t *s, int64_t length, UErrorCode *status) { +U_CAPI UText* U_EXPORT2 +utext_openUChars(UText* ut U_LIFETIME_BOUND, + const char16_t* s U_LIFETIME_BOUND, + int64_t length, + UErrorCode* status) { if (U_FAILURE(*status)) { return nullptr; } @@ -2837,9 +2852,10 @@ static const struct UTextFuncs charIterFuncs = }; U_CDECL_END - -U_CAPI UText * U_EXPORT2 -utext_openCharacterIterator(UText *ut, CharacterIterator *ci, UErrorCode *status) { +U_CAPI UText* U_EXPORT2 +utext_openCharacterIterator(UText* ut U_LIFETIME_BOUND, + CharacterIterator* ci U_LIFETIME_BOUND, + UErrorCode* status) { if (U_FAILURE(*status)) { return nullptr; } diff --git a/deps/icu-small/source/common/uts46.cpp b/deps/icu-small/source/common/uts46.cpp index 16565ae0dafd..207509308cf8 100644 --- a/deps/icu-small/source/common/uts46.cpp +++ b/deps/icu-small/source/common/uts46.cpp @@ -117,21 +117,29 @@ class UTS46 : public IDNA { UTS46(uint32_t options, UErrorCode &errorCode); virtual ~UTS46(); - virtual UnicodeString & - labelToASCII(const UnicodeString &label, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const override; - - virtual UnicodeString & - labelToUnicode(const UnicodeString &label, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const override; - - virtual UnicodeString & - nameToASCII(const UnicodeString &name, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const override; - - virtual UnicodeString & - nameToUnicode(const UnicodeString &name, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const override; + virtual UnicodeString& + labelToASCII(const UnicodeString& label, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const override; + + virtual UnicodeString& + labelToUnicode(const UnicodeString& label, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const override; + + virtual UnicodeString& + nameToASCII(const UnicodeString& name, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const override; + + virtual UnicodeString& + nameToUnicode(const UnicodeString& name, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const override; virtual void labelToASCII_UTF8(StringPiece label, ByteSink &dest, @@ -150,11 +158,13 @@ class UTS46 : public IDNA { IDNAInfo &info, UErrorCode &errorCode) const override; private: - UnicodeString & - process(const UnicodeString &src, - UBool isLabel, UBool toASCII, - UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const; + UnicodeString& + process(const UnicodeString& src, + UBool isLabel, + UBool toASCII, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const; void processUTF8(StringPiece src, @@ -162,12 +172,15 @@ class UTS46 : public IDNA { ByteSink &dest, IDNAInfo &info, UErrorCode &errorCode) const; - UnicodeString & - processUnicode(const UnicodeString &src, - int32_t labelStart, int32_t mappingStart, - UBool isLabel, UBool toASCII, - UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const; + UnicodeString& + processUnicode(const UnicodeString& src, + int32_t labelStart, + int32_t mappingStart, + UBool isLabel, + UBool toASCII, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const; // returns the new dest.length() int32_t @@ -222,21 +235,27 @@ UTS46::UTS46(uint32_t opt, UErrorCode &errorCode) UTS46::~UTS46() {} -UnicodeString & -UTS46::labelToASCII(const UnicodeString &label, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const { +UnicodeString& +UTS46::labelToASCII(const UnicodeString& label, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const { return process(label, true, true, dest, info, errorCode); } -UnicodeString & -UTS46::labelToUnicode(const UnicodeString &label, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const { +UnicodeString& +UTS46::labelToUnicode(const UnicodeString& label, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const { return process(label, true, false, dest, info, errorCode); } -UnicodeString & -UTS46::nameToASCII(const UnicodeString &name, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const { +UnicodeString& +UTS46::nameToASCII(const UnicodeString& name, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const { process(name, false, true, dest, info, errorCode); if( dest.length()>=254 && (info.errors&UIDNA_ERROR_DOMAIN_NAME_TOO_LONG)==0 && isASCIIString(dest) && @@ -247,9 +266,11 @@ UTS46::nameToASCII(const UnicodeString &name, UnicodeString &dest, return dest; } -UnicodeString & -UTS46::nameToUnicode(const UnicodeString &name, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const { +UnicodeString& +UTS46::nameToUnicode(const UnicodeString& name, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const { return process(name, false, false, dest, info, errorCode); } @@ -299,11 +320,13 @@ static const int8_t asciiData[128]={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1 }; -UnicodeString & -UTS46::process(const UnicodeString &src, - UBool isLabel, UBool toASCII, - UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const { +UnicodeString& +UTS46::process(const UnicodeString& src, + UBool isLabel, + UBool toASCII, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const { // uts46Norm2.normalize() would do all of this error checking and setup, // but with the ASCII fastpath we do not always call it, and do not // call it first. @@ -524,12 +547,15 @@ UTS46::processUTF8(StringPiece src, } } -UnicodeString & -UTS46::processUnicode(const UnicodeString &src, - int32_t labelStart, int32_t mappingStart, - UBool isLabel, UBool toASCII, - UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const { +UnicodeString& +UTS46::processUnicode(const UnicodeString& src, + int32_t labelStart, + int32_t mappingStart, + UBool isLabel, + UBool toASCII, + UnicodeString& dest U_LIFETIME_BOUND, + IDNAInfo& info, + UErrorCode& errorCode) const { if(mappingStart==0) { uts46Norm2.normalize(src, dest, errorCode); } else { diff --git a/deps/icu-small/source/data/in/icudt78l.dat.bz2 b/deps/icu-small/source/data/in/icudt79l.dat.bz2 similarity index 57% rename from deps/icu-small/source/data/in/icudt78l.dat.bz2 rename to deps/icu-small/source/data/in/icudt79l.dat.bz2 index b2b2e3f6811a3d57bc284368929c302ff601e029..5d99f677554f732a3223cecb6ace7c2d7d80a82a 100644 GIT binary patch literal 11409558 zcmagFbx<8m@GiXQ!QJ&haJK{}xVyUtch}_L?(Xgm!6mr6y9IYAfdp>eU)5LNy>F z8)5=Ci3slTto1N(%fcW#(oC$7^#c27a=n8JrGlv(A3?r4ktp_#*Y@j=vX8#mEmk`Y zzi#pYoI=IpltothEK}8n21X?-ZxeeYM;@C+lxPEmhw|b34_Ovi6Xlblw@1G~tWuFeL zJy}Zr2BSbri{x8DBjKuFbaE&-R`ItybJJy=U3=EyZ(O}xHJ<=PS!4*@o^ZX@gQ!UtBq?32Lq@RpnNwtBqVe~h@cAzgaix{ zyh=GtbEg(2&Pc+{XLWUYJk9s4CR@_pj}3B)YKU)yYh+&Gov%kIi3I}~{|W$*0#HlW zzUu&i@LF6YfAwi-B*Ws*`ZHJaFH?7@t-8u+$(MoArA%%B9k5nk9@JCJK4xfK;Xb;~ zhSoAh+`LU!DcIeW)@u*pa_r<6+W?^7_(i*M*XgfklA<6=Gdma)RRZP!fCD89 zs6$Ysg)1YEth?IwRO)9#*L9}SJ&`>4I<@h)^X$C5ucHh6bCLNyJwG8?mk2_2S0|8_ z!*|Tbxl4L3iHL?c^g25~FPRF~bqSs(qg!lk`Z{zS6L#P#Wb%pR1LP_vgxeC2RXwBU zDOWEcL)y2JWSVF{lo^ z7)S=Jd-}?ul!5&H2R}nFu_w=nKYaT@gOYC<;W^yY(Y91RfR?S^i&0_>z`HBoWok~q zKN=Tl2pb0-@E^DQ4mb`Z7Ff&K?y4zn8faf0gq(L@1;(~;s~SS!pPsfM=yg>yoE@qw z#_Nk9vVijdL-#y~*lU|pt^6xH-^>eu3r}9YzJ-K$7@}=T#)CTfE3dfq_ zUmy>G13>vFTi;pDTpXi>44;?%+c`jr%MVbG*T#UAA#P*+z>cfF56opC z1STIwY8GH$++aS>Vd90#2kaqqbe-;6dRE3C^8wEiD6Dz_z;9g|nHOtKoqL+71^_7I z{iqr5DJKD>3OE2j-RcE^LNHP!4gdrLNdFAe(Sd~jS^p1E1sQhG8^Sman}FRSDjMVj z(E2xrfc!aOXh=Q)58)~2`k#B1H2?rDEQJ(ZNf?*~&?2GK|BVCyvuY^-z$N6-9Rn(0 zAKU?L1!C3twXSqfIb2@Gp>kI~`#gL13J6{cz-+eaQ0e0#T+0y88RCeUh{0ETmU|-k>k{_8u@QPmWRr!iYd!jWRtrpHUYY;{V*+ zCk^2zd4jsSX3E;Wv(G1B6(l@>JlFNS{F?-l|35(l05I1OnDP1G0>+bBbE16wRgU6Y zm2RSA={@Bp_gYV%T8BqD~Fd1K5Q07{qx0RZ4X z3HX!UFN}l}jcOnQ6{Hgzxfq4lLNjf1vw&Ne+4AU)@+rsRFv(2-W@lSyS;ZOCE;>ea zG>vcI!a`X4aTIr&+YSHZIkckh7J%;?K$%%TJ;t7Jx(J!;&b9M_(QO%raDnRhVE+01 z{{tT6zGMQup=Vkl?OW_yeG>U3ZDn9`v}qwOteTiFqh2*HD^*xJ3lon6hs6+}f`o(! zKnp{M;8K06HY&ENMJN` zok1d-QU{-kO8oPe>_NKKL2zpkwfE}T_?qU!Dm%BKrt1f({L7y);tol^-9zH*S4bz0 zhW2Zg-?e-pye!w2-YVGJ#|ns-oqF4yjvN3VttZ;kJn8ip06qC>$Ge;4#yqN__#7wb ze58JapOzGOuIU1VJkY)aE=cEX#w5Fs%SV@0A1Y*|w%MQ@7GJL+*TzWfT-d&?US~vZ z!H(RxRgGPF(IhHUm9$T)Lmu4m{+Z$-STUR~>#|`DogsU|k+VCFx zr>8rPpJ0%>pM_|*uab5gdM&rw{6QUTQ032UFf%sYTlvRAXa3b-EBNx)^R)I6NrxMo zPe1z}qwCr>9K@7uz$UE%`OtYZ8?x0gELm5-k50nFT{AAfPp!hIcrx?m10a5#`^&u( zT{j2q6YdSNt3l6bK9ad6p>)zZhu5t>whQOw?dd`%{LwSF7L*$eRZF(Gg6WItN8*J# zPN+-2ttB7jD-ihLQi_&et&eQF}s-!VTvpX~`g z)QAV*#$!;)zf}|J4d{DcOju7mF5brvB zV6HoVqWoreUm@KNTG}r2Ttn??4Is$=2}X0YBHkqKw*}g=PH^OZk*j$rcurnJJ^P=K zcKM<-UF=paANLA5;|rvBKRf#n31HNEwl`0|vik1g-7kAU@;H7GU#(<>&5dlg!}x|i zIO^#2-1~Y#Gxx@x8*rS#YWHI`!#FDJ>1~d>_gu~>Bz)`s$b;{U*Z@2vlj|3C7dfQS5l+W%g|7ys{9|CbK!X>T{IKMTu933HAOA$;H! zeX*T~@on@Vduf6&A0ZFr0)o@hx6kfINT@r$dEytpfbHWNAO2<%VEfg3S!+kfqZSa_ z`LLrbG`_qw?*!LQzz9XXJ_=>236he|K?8c(=<|u>VN5Onz~{J}FkX3yOSzYZlh1k9 zB1p=}LkaE^NNekU7>iznp$Go=fU+{&A{+!jL9N;VfHne{9FtG5JQfJ%R4{g{ACuEb zVb!(J7zh~EJ7Kbk@gSryu?$3E!uhrl@gQ~1Q2$l3ZbFdDIB>!la{>TcddorL;7v#O zTzV|$E0SXUV_vk;e+g-Oz|6;gL|E!s=t3Kxjmeq?L_QU&pbK_w26o zZIw~Y+1Nhjik%EkZ6jglHrTv&l1I6te3-j-r-d(eH_)Fj#ws&hKz_8-`eIq3aP02bluGw94y8S&oV3xq82U19iRQObx2SLPQmP^n&^KuG8B zK|+;1-K^DopuSx(e?tDV9sirxGuGxXtx~sob|CHp9h@qpLi)owOJ7!tzFOK_(}cqU(Eo)Wv@sNs6)-ycpZBtrviT7yhpu znrlHAfE@$?Y-|Jo5rS9>`S&OQh{>w~@-b{5XrPI(F(Tp-fd7WY1_S@~0|0ElF*de5 zfLW>l4;kfx5h+sO`qzpr4{bgcJPS}^DxqQ^fJLB)0BpqkS^3;dYyftwG?S|zutH_{ zDnF-oXRkJ(M!!4DMU##Vor~q8^pQ6CVXmUlIx#Py;vl1<;!;U6(XQ+}{Y#t#e0sPD z6ab-t0O_Hb|IA=3a1e2Ealwe18h=n=Co(|+FVF-U6A@XLMw}An&yE|zmzJ9M+biHa zr6bH01}exPfd3;T^WW$CpW|cU|3dSB0NX47ug*ZBp@=8^r(jkzv#^U1hX2qM4s<0% z(aD!g zF{)s^Z0+s4IeoH%BmsYZEJ^tkBCpaRJFRBmwE+l~H zg)NV0+qLk(Gb&HP*7>W|S1AO~m+2jMbLIKH^q!x0`%XV;I&F#V$J@4Nhvmx1j~xDX z!j$*+t>;O!Jj{0nMH7xYdYZfRS>-P%4{clT;nuMhP z+|J^ur?B2L$VmqTN=srGB_Et#ybx{N!t7fgIAh$XHI5f8K+~2d`en)68F#JBgX=TI z#PaP*f0RK~SrtT`n$E6JX4jlvl^>ML4q3m0WtX~gcu4k45UeAm%?@#}I~)A2}N8)MqLfcw{d z9~uU|(I=L|g+8&Eyp|co%!2Rq$|8k{ip|0X#bx-g#F=vWHi@6)sMW>n5eiJ}8&0XqJzMhp=a4AqDf{nB7*u3&5vsrlf}}S;zIpcD z_>qIM&xgJ2ho~Qh-I(m^X;jm0dK6IzDf~U8Ie5)-*T|inSV!+?+|e^3$_G2#y3B7^ znFiB}&w4`ga|qokx-KUO(GER6bvz|m#z?f(#P!T6Fu=iKmSMLpNQHDC>;qO=l-j)$ zEav5G^u(bQ$=Hw6K`c~Ci>E;;)9j*KwIgSs2RB$gO1-#*mmnWM^(tpE;taWt+*h=#G%;qFaBA(5HJv=VQ=_!11mwvxdx?-&IbL83Urlu&ab6ADGIp)-@(VaX2wq5fe@- z60tGyX*N zY%Iu5l$PrZS(0}#TXRXxe)Quacpit9^z39?GC04h(-;-! z7PV%a#$`5|X_Tq5#;6Jv?>3p96iPgBO;0qIHnsblG#{cqnNV6Oq3ycPH4%IajDD_^ zK-=>4(Zg+d=d9E&#E43tXyGR(p~YYI#Nnjo2%l_W;OdjuvsK2YPm$&6$8%tYbZV)G znZS_kVxdw>&~=0!--1#^xp~c$GsLkxDJBs?(FF!ykgfOx+XNWDxLh2!q}N6zQRg62 z9VAfr)Dqrnm6SCLp8i}R>GT#Lb+#fc!k7LsyqK6^DKqkrL-RHFC)r0#Mrtd&tOrK9 zw6QojV|z3y)pdzaQi(17uOqzq*#Wmm`}iPX`!=b?w?_F+qO^o0e%(+>Mc-d`$PsOk zn!0j6c4g4A2c>YS5>HQ`_F6VX4_q#dW<{mYgvT_tjFweWChudY+xBCq3<$-%)uA{juwEfA|OLJo=3H@ruuv+^_{&PQ)duqn|(Ql;_P$kOHs*7&9ZM`$e6_IKbXHX&58+VWV z5_t9xNJF*dyc@CSyo+l8-h4X_TFXzNZAx;I5^@&n?k}oQ7q-l+9YzTWgB>8DO7wkV z(}78bVAhPx3z}VywshX6s8Ic?X{1-X%;j(G)aKanOZX(6^JmTFm}JnxOt{T5gQ`P5 zG4yu^wQg91HM**DwO1cYC-0Gr01_N>xJv-20Nmpd zeOGPLlqxiRH=cGwe7m@d)owH12tbc&_sM^1~D~D?0}{V_GZLz?R{i@p70XpTg|`tH@|~gpydQ z>#`#cpn%EVSHL2BUW58I+nNjYqvrWb+T<*NU2+!wf zNsNcnzq{TgK7Rcr?0mL>emu#-CbTB{R+|~Mt-7P&{paO}=BF>nG4tHZJQ%wh=X}$ZZ zqVRzdjwNPOCPHBID(-NJh-WvBSVvxQ+;oOXEwP*P$ICIu7 ze|7ua<#*336-E?eGy#)D#+3^DuIX|f>{sdU)T&fRCE8i!)3Z~LKe2Ng3vK| za)F(~VbHjt{ju%0X8QZEY~))|^wH|2)|D1p6LwXg-ybWyOIr4JyO5TEz}6VW{;X=({lYeH|9+Pc@|BE5M`V~dN*cQch^IG10+5a>Kdd- z=04RFt-Q`beSHbm6eMLlCKZWDI!%D<$55R;|We7|#uEz-stc-$FMXIdCl*pm;&vNxrFC|4t&!C~JS2x#2 zB8Z@mk3@z(#tkQ^LzKaRLu5&Wq>91gOArT>%cvHnpGveN50fgCt1^UhFk*fgbAMzZ z4i@2{PSwX@OH)s)@7Op0J{l%8DcVNas$TdMMMIIOV-ktgKviFE7_W`Ln!K%oVt<4q z7jD+Z3{3_X%U2)zNi_7=bQ(uPEM|fVPE-UQoaEF1$)q;EG^{i%CKg8KjfBo|SiQ5l z>|aXfF`p*S&K1x}AWAx|_hK^8F9~$zhbJ~|vL930SA=|VZmXmqM2IvMg-ak2w%~xX%CjzCYz!CUVmEe6-9;RjkuYIHiCvr0S#A%?{Ive zIDAV8cVtpZu9dj2v*+M2*KYk%(-ZobQ4rW(7AMsEa`(adJA}ZlqYyVOZ#qbkB&|)wq78nSS&7 z^bXcn7{c1dN&RXMwkfjx!%Re9w zOE5FbQP8m5YR|*64%x~?1mIm5YxLuz=o%Lnm*R}cQ&VV&#=|A*r!T2U!=(fD&5wu{ z2&45X#^Dl>0!(<0l||~5!0>)LrsTwgN;+8?oJ3|0QA&}>Vr?eVMkU$)kRTiScx@T& zateAN)8`6Q`IPf5jIcG#Sb3jNQ&Nk@>v{9^IdDRWmNAyrbA=e^dN|dxP0qtp2j^(V zQuXlNvfT&%K0Pg@!jNdwvhsH%@#V7H1)S`4z!$y{afSVynnOchWQ|@%Q!i%3TWG8& zDvJ3=32h_{a`XlJD;9IUP>cfP+I(h-sHeS;+Ov;5Ufx%W~P0LRGsfX&r zn^so@n_ndQ45$uqQs8>(#57ut?OQW9B}_9ZjTu~zgM$OgQ$h=VqaZ?2)Ly?L^Bg*;w8K|np;LwV1hQQ%^dcEi zwtzU}CL>XS5#q&z!Qu0LJdODT@Ti15ay|RQis|g?1^(UG(N%X92V=4beMzq6=!jS5<>Dzmg7@E=~jHIWa~T5Vm&I{LOn#@w+>k5i>i5sO#uLkjA;`Yk`Xc=5RH zIp%wX&w0${qo7dxUUlK~_PJvG#A#1XV|2-d@qVbJxL-w+$BoEj^4M@(^8wc~TQ-xg zl=Gu&UaN?iq(kZwYJzDg|C(Etk<$9Z-?uCHk>-nT)^BGWYNe;e*=w_SDv`sC1ll67 zSn7$}9szn#ZcHgqAwvcl6vihh+KotXPXO;OwK7~VbOu5MDJkT@yQ>}-rTuh{>HYRr<;)AVfh z>M|UDVhK@n5nXLk+nACIlQ;Z9OdHeB-AA7I6##BjQJ`RfAY>}WLU`oA!mYov1-~*1 zsp|b+lYdN&N#XB3H4h{^?`hTkDv8qltIhd~$FFX}7t+$d?)RCy=WYX@Bj=U}P3Ld{ z$Fz*iALPtRvPW2d6e}t*tqRplWakGVFB^;S1EUCR<)?hAhcfap%JqTT&mT=+o1e96 zD!l3)(MAc%Fb*Z@q8M`{_Z(pta$1#X1AFvpakJh+jv`a{Y^7gv;BftH(vWggXEdX3 z?)f_k+=9>Cd}}%b@3-pKW=78*<%o4&(dB;yc`Bh zDwZ7tJmc@)xQnRxa(g0{USG~hO;=R3jlLp=_;#9{L_(W3L^J;+_C_jf)F@02E4Cc4 zoJM$^kvQmf9~Lq!yZss|M81BXW8Zi8Q2yC5$N)tYW49i`Z_-fh?ki*MO0qFCc`a2# z#JRh7bV+>`70*4IBBEwrf+ks2av3UOI7L$?S9Eu?xP~d~hbk7Xs-{${&+<`f~fL zDH}c)^Niu4HvTyS)b34^XT@I&-aENi%taGE%hpx@t+}rKYWdXtC)eAX&4_cxXoj=; z4Y9v?bJK_Ku|)bCIJcr?j5gkr%^H(}G<*R{K0T^jZlIVWlO<-AO2Ao=O|S?@YJ zxad& zVmr>o%e@U;mDpF*9H4OF_fObaN-w4_ac`-3WvfLoM*{qN=VmG}Uv zCBh{IuK+GqTYrSw`sIQHQH}qo=td)1i$-yuo^`vva;Ib~^Iw2JrfmO8Aa~)DK?al_ zn;nR+7h(uQ2nJ}_poNcA(b)q>V;Qh;ACmmFnY+l4UG!qwNo5PLpgD%`9Oyw7)K&_H7US{o1VSM+%vR18Ftg}Fl#t&2w8v&lv$hPW2H6|J)n50B*M@*(Yx%`W-P zB~cv;ib1GWoI3#X0to6TdAQ)9$bH26r6;RxHVrIPcb;Eb778%D%~6JEs?0*uNmC=$ z2N{DgpG6<@=@OGZ|DXz{hM`VH`T9bm8$bSaMnS*`W`z9XLE-De(e-N$Fb7gy@!}&v zT`uH$W);Oc8-r!5bU?{JNNk@YqT$Tn7sm$CcE35!ul_O=gY2@n1X5zaCln%6dF#9_ zHW~&9ByC)&h5HY8BVp6eTYDiB8<22pm2S8e1Z-S-eOY5*4zQ4XWeBC~(Mb|4ePsUEYCvxfgnH-gKCzL?kAKv$kmVt~k-%1t~VeTYL z%;NU7Nmq#Rcw*lI^PTL>w+~pJcm!x!%W978<4eQUWj|+nErTtxcSZd$u)~I2bm;K= zFwp$YAC#z-MAUvauVGVn6kixh9p>F;W^I1X;+iifwLXkqi|a@0dsYefz=a zlhNORs4a)Oyeq zTUj&lp9VT8J7S6Em94sUPtCzjbi%#HyOsCX+k44Sx8P@fWy;_^2JPvF#q)R^*^3d8=REw)D7GBAG0!29CPOSeA#X^?Uj`iG057 zCnQkKgGftxa#~_O722K#mMl;9_$Or_Om9HC%1baTdc)N@q7}+7bOU^(eEmdTa?D}F zloxJ?-j^!tW+e#=etq{dfyv56>(+}3DAN6rHTI|_CP$XF0MQ$-m=R(nbMoUWB47)E z9KleDaT9kP>EmEveF%Rg5q5XP58(Z`Wm5|Uy!#$65yZiVH*xzK&39p1^0@FMOJ!Wa zh79jH(YcX?T&lntE~gMhjTdUE<3eLdK>`ORR&MWGgYk9o(Qcc)YqMSp4;7})|DfGx zui3p+){^2s-Ou3|VBy0k=a)^?m%&yQtEy`KIB;liaz&)CFAMFcaaSWujkaq~UU1z* z&5?0Q+cZb}mz@qf-0qV&95U+8BXlbK;5LDFu`rC~w^fF`?tO4F4M!NtDN17fxP?Fo z-`0}&Xml9Aq2x(st7uCPX5<*%dYI4jw(Giu(~ zVy`{!xki=bd|dyK{P|#pQ4E%`pEM)b>p5;^cxvg6Umq&NW2F6IPk`V+cZ@Lu$ddjZ z)lEgk(1j_M&lMiA5zyg{4dU7j{54`OQ}0l4aalSSFLiN`)kQv*+Mj1 z75t;s8NMb6E({z=-L+27@VPCE_Nlr;#Q1^{4Rs*`A4NrqQ|cht8Rb^qNwXG2nPXa1eEZEt8(y6UCvmZ=foICrT$>Worn8sBoNF$1I6702+9}-I1C957GSv8 zMb*%X$5YIC3Me-Y%60E(MqoVw0lA>0%!)5gBBz#xJj-K<>*X(qX4#N!d?mk5!dR38 z_MX;B>H3`%kPt z%$MvraNq6*m$}o4eS#p(xTXwEKV9acy1KnN;7U_Mh}n(HEY*SPMt~{Ok}JfC?NESL zxTY4)S>Wj>bgt;iE{}U9!7gSafkU^T-1~> z(OS6yL@c~NeE*Qh)rGo!X%{!pq>WdR{>NFtvX+MG$*F- z4*Y>rc&%PWbMMm7=-;U5y)Y!{2%&IbQ24&7sthI*B)X|$eJjCZ&u0yKN~cITVW|DJ zRr=HHU6-&kCmk`fM&l0$3En z6Db^ry3rO_Ht<=ZmX~x0va`~(9}^%fSQk3Q^|FNCcZ9c0RO@cRpM{2Qq*GmKt?usi zg*+>cx}cqJ&)6dtlPW_PkcNl_!ysTBSrV{qk59INI%IeO_qBxW!$-A>53L}HL>X=KGeJBjpOqWfJ|6_T%PwK)=v zjbOp#QyC}zr%n#pr;{Ru!12Q$mibjOhh}xK#BYMC9MDIU@V3#~2N$Hz3xo?h(hsL=dWz@CaT#*+@7- zYjQ7%fP8u(CaW9!2m^6Pwp34=5ljWdhmu%ow&7UOpJEWB>FHA#0E+;GN7U-p@xLly zH9l{9+B(|&Y{7ouk1isfyP`SjCQd&*q7>u)ivB$O2X+iP4VpYFPs8vBJ_!MIJ}e~c zk-VB_BlHK(CYQ^MMKqPYT~6A*`|>$*4+ezh@oy;IuV$_bs6SZve+yZBEMD|PI@$mc z+Yy;5iiYM%u|(nikqrgs=?8uHR-(VwS!K0{EIiviua9MnK}=}{=nT1sFP}@_GM`-C zNOjc+@=!MBQ8~P+qP9HIHZ3z-bA)*RCh@rCn}l}8XUuV-eB%me?|wUti^x(dqs4L+ z3JNoU#b|n42{J(;ve_4JEw`BQ5=5>k5K`oUPLpql7q`&E1IHKQTn)iW!7}tRt4!`m zA-#eBiXc$tzXXy$3ldr92iS*8Vy!$cJ`AzQG{MQ^lj#_x{E!C%KjoL1q(5 z#83{)Ge>a07=(N~2ZUb1V%z!h%c6L~0q5!14CI*IU@!6bpT2aq7Y^O+^+0>@fTJj} z(%ze1hr%EQaqSLHMO?z4W$X`kyMbRQ5!pnf!ST|Kp;{e(;OQc}J}^HY+Ahxc_}qr< z?TlstixpfMHB+Z!W>v6UGb@~*8BIGg)3n>FL`sLexDinUp_Vi6kFDmUi{hS~SXkQ5 zSlA0gS71=k6+$t^jS)tPqgkDPGJ6@vv$8&FE>A>tPvPFMf0G#6HjKQKPnflwICuJY;U zaAUNFF*U~F~0VPen~GQ0{c)k+uD{l7gL6qQKs6aMh9sOd6P8tfL|*lp-x^6#u&0-E>&M)#+xxxj%_#vGYSyh&!{|i^N0DG-XUC z(^5w8D6T^=Y!O{j@%x|PUuvrgJ&K&78)Q90hbj^(YVtwQRs%AU$ikI{!2{oHH&|J(o~6-jwv-ND@2wC#GV`eV2pj^3lVGa#81zc-y^6J6?y?CV{`a2 znfU#IwRA~uI%z9#yckodc)aPtk(HoQnI=j5W+L(|NhIt|!{l^V>jc=#gMAM3y+t2B z030ZSGKUGx&TnWY7x%0O6&xr{cNbu6#C}Skhmsne+ELGYX;1933~5YMk&q@&-n6F3 z2`8Qd1}7Eth1-UsMVAq_C?nWJFkJ9x)rf2&kjzI@O?9d0RZYgJG340BD5g)KrcLO9 zIk`Cf-KSsd)E>=On@$}Iq$^2li!ztjf&JtxlA7mx2{tI#Fs5N63>4V)Z}yE@uXAj2F$u{l6lQW# zIv=_D>`p(YPcOG0ndH=ua2zvKR@Q?8+!ZBH| zo(NgTZLnw+E@L0Jb!cD_jt>_s^q$P>avxHTM?pz8yWe|{ z34$h7R;@lJjn@o({{61P!*{zFkf7Wz9*7zJNCvX()7cTqw%*w&dxk0UZ+Gn zMyvfrI!{F=<8MVkK?U(Ks0DB_VdF&tk=dyny>(4HY6hn{0%Zb~onY`_nkO3hj@YG9 z_uIYso_n`xF*{Z29Y*ca>0BNW*`#;8Fw5Xiq&v?u#se9O6_llZ><~`G%wn`7fn2}# z`v*uD`Z2oYwsh0+9|pR%*T(b1;(S6AR{~E^x~^Izq1elzG8w3n18MRLaL?N$yEs@Hs!QzccS z@Wlo}FN>k-Ut~5Hy3m(sPaf=ts)ozcd>{simQYh`NYIz2Hdq^Q5>zrj&uNJEv&m9m zsDg0k#(ws$H6sy(hhOQ%S$6R$eQNSt$?e2Es}GRrGHxMiHrYJV91ALbpFdma?bKxs8nu?aJObFUU#8K$R-7+2r-dQmgytm8?AMTGh%$&c#L=?n@AJ} ziteDYx(&QfCF+oYMWl$H=y{E+v&B%ktb+;0co1w#Qp;BC5xbOD+fGbk{m((C`4<$X zX+Pz4=0f4X0O3T*1KCg}8Ved?vv})0Zi2`3iO_RBL|V2`icJ0uym)1u?9&JeH@}>; zr>{yM`31Ilpms${#hVbKOWt{{r&DT3c1L9ZjA0THMu|?nSZ`#`@78dXeQ&w}b8#B6 zUAL(bHOBJBgRIfN(VCg`u@VgvtNHRC*#m56`FDt|bUFBGuP`otSK&XBwA_ph`1;pPqiHUaZEkYnv=>joq1rf7 zs0C^%mGQ13QXLNiQMpSZBB5&ZojU{36v@1gW#rUxVgy$iWXU9YMu#%bJnPQA2AOcPNhUMr^cN>W)?Qn@==vn zAcK!n7;R;jGv~)6WJh&~Y@*#Hya$iz=+^+GQ);my)es#`2?j142qU!)fVS;DLJ55-gE?-TjYAe3F$gHf~6#g?kYr7;vW!yzo zC0akd@|li)%1QCy5W7nPws1jr%!sC~{*z9hd?vgj9es8lDhe}&TsO|tEVIL%OUKZC zI8QeAXzFwoA`BOUP*Z607nuW2U4iR}-p;*JvNNj^WLupIN5qc_vN{DHBj{CfS*61? zSv$#tcVc4j`xC7!e;C-jRQ7amB=TQvykc*0gww&+FWI;eM=)zgY9}uRky5ZmlDGH=(!Ou_FIa<0$K@IXpR)`l)`h zwrQSG3&%72+NFe6bjV=rmR)x`0Wsqa6K-nnrqf9GY7@b+R5y16ezEnuyNOPWdu$me zz0N#PQvYm%iD}PPS0PXq znIqZ~LRJ$k{o9si=1D(d2A8`cNF!CJNo04TGa;IFv4(2RJ8(qnp?U}=mcysVYPHu1 zoB&ybP|l{x5KzPV;89rSXCK#6t5qDhi*m^qtHzsWEvQ(3q;Q{3=Uv<*8;zE*kP$p( zPtmm(m*LgEhT{nDjOahisK&zFLb4Sw4oa9;F2R#0MZnU-P0!K8$q*68W7L(vL?$Tt z*p#bH)1%fOM%!Wd7zsCBd36;d@(H3~nv6|ohMG#CQrg-Qso7-)$a2{da#ck}KUmVX zxR{h)JmxggRAQZkM3!0_$0=*N5bj#%x>+%a;(n|=)ZdeFMCQkuU`W&XG%3kRTPmWA z$EN9PNs#KSZCdzu$kt=kVgws%H<&zy1o5}pOojaBFOpOj&Tk)Ges z4DtPEeaz)*;ph?)`q4uv5|9q=GR`F^Q(_BDN(}ReU>SrnL)Qd&^Q9Y^#&NLONCYCw zNOcj6VQv@gVb_?l||?)49l3t)Ki$hcLRWiby44^yHgDq z@B3^LXEZD@?{AdiW8)2qug!lO?lY!T1fXWLNUAh*CFwB2IjQHArXAd+#Mt}Ht}aeV z2UdCl9MA{<9TODO{s>;gFk$`vVV7MVy)6VGk{t>j=>u#al@n~a1YUX4ET_Su#_KeH z$=aod?`PcBecda#WhH}AR&S4u7(eycRYX$-+UG|yk7 zJ&sos_o26SP=Pm4bpZkMu+Rw6V0g)=n&v2*P1P!nZiVbma&0gFj(mEgWxoremR;Jl zZ{?{rKlmHvS?s0E^N>1OG2HOggCOUMX^Da%0b>!%OHJ6K-;Lb&y>> zFRfq+QLtFB3G~!V3-m8>()|X6fp31bh9=YcL{|sx(s}T0qs#f!LPc?eG2FbLBaXVz zLEWwqlTAhAe_4uIcRv|p0@cy>h=z#LbOf=Dux{xoanE>Uq@Ki8x@ZOUvG)=Ra8x8B zP{>&=W7DUs?t@&MajDNTPc?t#@lHv5R#7*A;2kkHva}_mdDWG|<_L1@3p2S$ECr}| zn0?xegOfJQX=>4kn+!3^1mlbob=>e_OoY+F@Ln?vahy_VWEBxq^m)l{4#$ng#4YoY z&Y|%;{x7V^aqjI_Dq|N7+<V2ew3KOpaGBWv?d0OiCIls zZE5E_@hf}n&3n*(MM#iEl&RDs(5qEbk5V?cWGM2F3G6LApD?CZ&l)SBL_ zp7j1Wpfx(hL!1H|xtO03JA>W9$J#elA||zvU}5o5Z+p{doLP93Kd67RGq(%>v{{i_ zvQNL0Uwk8rLvs+bf|<4cCfH}*38&aaSL9VFE{lLXfbxn10XV2)-@~+wQZ0X0ZR$QK1*vYg*XfS6etpiY$b?-01d0Cun;V8Q zl!`Eay_^I)TFB0hkbbNJYS$VNe;qfT{9gb~K(fEf$(X*y_vX*AqhhS1OrN@xL=gn(s$tMD+G0O_w8T2^fpu6og|soQ zz<1{`Z0|{AtL!I}SH;M`aO>iyyrsrG%aHL6ko%=&F$T@J1NmW^n<01aW-E(*3F3rC z+I@YCta*HV3ST&?EU;u7z$+6-kfdmQ?fM7iCJW+>A z6DUs+Z?EU%Jq#q4$(*%>Bbl5v)4yN!W4qxrfv>q)FP4 zVj)aKL_!1{kpNjQgG+XNDb~X|kloFG%Q1FaCG36hn7b)Z+``8A=8K2_pGUa#zRJSW zw@-ENrp6ic7r%UsUVa48q3l(QD>A+HvKCD8iHcMbH9^&73YsM(z^e-dBEy1~;>x8s z4s>BaS@TtAkuy2OF|35WJh;Lis5z&`C#XZoMdKb;j^38Or0F|n>U{jmhCh3H_KvS{|uSenNd>t@h#%H=8Le#Z1SN4Mb7^$jZpMTBD1OL19boqK3Ot z^~|4#^{Ac2afEkI83-~Q%gal_>oqHJnb~RG`^@~ zr0xZ=eZmozx!#gSh_wRNrHqXh&K6vCh*e5CNm$g~(YK@>qEqFOMy6W6T~ZUyJ5Ptm zpo~yePy|*^)*1y6;&k2Dc3Rfj-w7se$!sCFDLteDl?yFSagpN~%4M2ce%S%cLL!)= zoj|6ktR^wrHmpPfu|lmi%TmDk3hrJy@JS#D43Q#~U8zVypP5apanF%nPjHv20y3}w zN%{A*PHZ$wdIM5Jh{b!~;=4wSnx{LHzgSCWL^>o>nd%cc5$u+i`)k=w&3SE3V) z5Rk`mcx{HBeva2@tEp73xm8Dpjzep=-&VvkXAB4(5#z(0MHGV2ZYL~Sx6%Y=djGGRhZo-OGGp84_n)t~5A66~D~58KxgouvM28 zP1Gn=P@;>8ER@15g2*W^gt1G=GW$@XDy30PQmU$iFJuLYb=NWsmIxOhraMtpP@<7& zlsA_bH!!AvjUJ(s+KC#2&xKMDHfwl zDsy=Go`0U>Dh304A+5DlVkQJcun;Kcd2J~RUIpYT6Fg_J3}#f?G!7W7S}Es-g)>qF zSQf}IFbpyJ)g-}`WF;6foHz^?QmduRh{0rNu!$0qlID`b$ayRa7@rr;b|N^EeWCL~ z7tcgL#?&$n^vfv(SLz-^LIPcADbO_F(u~W^dA@Iw*l@Z&POjC>t-dZrEIHQ2${ePO zx~8*Y;}p)NsSRRlW`JDVbxoUJwc6xO{<>MDg#J{T;Hqv3aS6n6mLdi_`Wi?a$9L;a zOmy7($?e!wd(y4h+p84?Acz42*lXi)+egrRD0^{z;ELW@PuNFSX^B6Nd)O;WtmN#| zoL6trGnh0xavl0w@3LLR(TVF3eVx~|#)M=^!GM8+S-I1CEZod#PX|QDh1w1)?#(w$ zR$^(YQA&(75WZHMBa^;gW!mV7&!$gv8;;Iu(72?WD1kP%QkvPwl2c?zLXV!ttz zf{V|yNuG_n8dHjkC6PF$-<{FsRb}KD2tGc!;DG3m?pfn|y0VkRrZnelUEVz84)fzI zc;hg{Tw?JCT-?ykBEc0{NT+W_BxhKV*YS3BfB3&U?{W4yeRp#7zi+CS-CcK6X~